代码:
function deleteItem(req, res) {
Goods.findByIdAndRemove(req.params.id, (err) => {
if (err) {
res.send({
success: false,
error: err
});
} else {
res.send({
success: true,
item: req.params.id
});
}
})
}
如果我传递了_id
刚刚删除的文件 - Mongoose成功“删除”了它
如果我传递_id
永不存在的文档,例如591dad9a1583ea0d1065d633
- 它也会“删除”它。
仅在传递a34pnv530eargdzbs
等垃圾邮件时才会抛出错误。
有人可以告诉我,发生了什么事,拜托? :)
答案 0 :(得分:5)
如果您查看相关的Mongoose文档,您将找到其背后的原因:
查找匹配的文档,将其删除,将找到的文档(如果有)传递给回调。 http://mongoosejs.com/docs/api.html#model_Model.findByIdAndRemove
如果您的数据库中没有该文档,Mongoose不会抛出错误。您应该检查回调的第二个参数:
Goods.findByIdAndRemove(req.params.id, function(err, doc) {
if(err || !doc) {
// Show an error page
}
});