mongoose 已删除的用户在刷新页面后消失,而不是真实的React

9ceoxa92  于 2022-11-13  发布在  Go
关注(0)|答案(2)|浏览(129)

我想从表中选择多个用户,并真实的删除它们。当我检查数据库时,它正在删除选定的用户,但从前端的React,它是在刷新页面后发生的。有人能帮助我吗?这里是我的FE代码:

const handleDeleteUser = async () => {
    const response = await fetch(`http://localhost:3001/users/deleteUsers`, {
      method: "DELETE",
      body: JSON.stringify(isChecked),
      headers: {
        "Content-Type": "application/json",
      },
    });
    if(response.status === 200){
      const data = await response.json()
      for (let i = 0; i < data.length; i++) {
        const element = data[i];
        setUsers(users.filter((e) => e._id !== element))
        console.log("DELETED ELEMENT",element);
      }
    }
  };

BE代码:

userRouter.delete("/deleteUsers", async (req, res, next) => {
  try {
    const selectedUsers = req.body;
    // HARD DELETE
    UsersModel.deleteMany(
      {
        _id: {
          $in: selectedUsers,
        },
      },
      function (err, result) {
        if (err) {
          res.status(404).send(err);
        } else {
          res.status(200).send(selectedUsers);
        }
      }
    );
  } catch (error) {
    next(error);
  }
});
d7v8vwbk

d7v8vwbk1#

处理setState的方式完全错误。setState不能像for-loop那样在单个上下文中是多个,因为setState在重新渲染后会更新状态。请尝试这种方式。

const data = await response.json()

setUsers(users.filter(user => !data.find(row => row.id === user.id)))//don't know your properties adjust this code on yourown.

console.log("DELETED ELEMENT", data);

我想你应该看看参考资料,了解状态是如何在React中工作的。

daolsyd0

daolsyd02#

每当我们在react应用程序上管理数据时,我们就称之为状态管理。在react中有一些工具和包可以处理状态管理,如redux-toolkitreact-query
现在,您的问题是数据不是持久的,要使数据持久,您可以使用许多选项,其中包括redux-toolkit-persistent和react-query。

相关问题