我正在尝试使用postmap API从mongodb中删除一个集合。下面是我的代码。更新功能工作正常。但是,删除功能不工作。它显示内部服务器错误。我不知道为什么?
const router = require("express").Router();
const User = require("../models/User");
const bcrypt = require("bcrypt");
//uodate
router.put("/:id", async (req, res) => {
if ((req.body.userId === req.params.id) || req.body.isAdmin) {
if (req.body.password) {
try {
const salt = await bcrypt.genSalt(10);
req.body.password = await bcrypt.hash(req.body.password, salt);
}
catch (err) {
return res.status(500).json(err);
}
}
try {
const user = await User.findByIdAndUpdate(req.params.id, {
$set: req.body,
});
return res.status(200).json("Account has been updated");
}
catch (err) {
return res.status(500).json(err);
}
}
else return req.status(400).json("You can only update your account!!!");
});
//delete
router.delete("/:id", async (req, res) => {
if ((req.body.userId === req.params.id) || req.body.isAdmin) {
try {
await User.deleteOne(req.params.id);
return res.status(200).json("Account has been deleted");
}
catch (err) {
return res.status(500).json(err);
}
}
else return res.status(400).json("You can only update your account!!!");
});
module.exports = router;
帮我弄这个。
2条答案
按热度按时间gudnpqoy1#
您使用的是
deleteOne()
方法,如果要删除整个集合,则应使用deleteMany()
方法:8iwquhpp2#
Model.deleteOne方法需要一个filter对象,如
{name: "value'"}
。您传递的是一个字符串req.params.id
。如果您找到错误的全文,它可能会抱怨该字符串不是一个对象。您可能希望使用Model.findByIdAndDelete方法,如