Mongoose如何"删除"不存在的文件?

Sev*_*eva 4 javascript mongoose mongodb node.js

码:

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
      });
    }
  })
}
Run Code Online (Sandbox Code Playgroud)

如果我传递一个_id刚刚删除的文件 - Mongoose成功"删除"它.
如果我传递一个_id从未存在过的文件,比如591dad9a1583ea0d1065d633- 它也会"删除"它.

只有在传递垃圾时才会抛出错误a34pnv530eargdzbs.

有人可以告诉我,发生了什么事,拜托?:)

Fes*_*sto 6

如果您查看相关的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
  }
});
Run Code Online (Sandbox Code Playgroud)