如何使用react和nodejs中的复选框从表中删除多个用户,mongoose

lsmepo6l  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(111)

我正在使用表中的复选框处理选定的用户id,但当我向服务器发送请求将其全部删除时,我不知道如何使用mongoose处理节点。有人能帮助我吗?下面是FE代码:

const Home =()=> {
const [isChecked, setisChecked] = useState([]);
const handleDeleteUser = async () => {
    const response = await fetch(`http://localhost:3001/users/deleteUsers`, {
      method: "DELETE",
      body: JSON.stringify(isChecked),
      headers: {
        "Content-Type": "application/json",
      },
    });
  };

  const handlecheckbox = (e) => {
    const { value, checked } = e.target;
    console.log(value);
    if (checked) {
      setisChecked([...isChecked, value]);
    } else {
      setisChecked(isChecked.filter((e) => e !== value));
    }
  };
 return (
           <tbody>
              {users.map((user) => (
                <tr key={user._id}>
                  <td>
                    <Form.Group>
                      <Form.Check
                        type="checkbox"
                        value={user._id}
                        checked={user.isChecked}
                        onChange={(e) => handlecheckbox(e)}
                      />
                    </Form.Group>
                  </td>
                  <td>{user._id}</td>
                  <td>{user.name}</td>
                  <td>{user.email}</td>
                  <td>{user.lastLogin}</td>
                  <td>{user.createdAt}</td>
                  <td>{user.status}</td>
                </tr>
              ))}
            </tbody>
 )
}

这里是Nodejs代码:

userRouter.delete('/deleteUsers', async(req,res,next)=> {
  try {
    const selectedUsers = req.body
   
  } catch (error) {
    next(error) 
  }
})
uurity8g

uurity8g1#

假设route中的selectedUsers是一个id数组,如果你想执行硬删除,下面的行应该可以做到。

await User.deleteMany({ _id: { $in: selectedUsers } });

更常见的情况是,人们希望在将模式上的isDeleted属性定义为Boolean的情况下执行软删除,然后执行以下操作:

await User.updateMany({ _id: { $in: selectedUsers } }, { isDeleted: true });

相关问题