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

时间:2017-05-18 15:14:25

标签: javascript node.js mongodb mongoose

代码:

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等垃圾邮件时才会抛出错误。

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

1 个答案:

答案 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
  }
});