【问题标题】:How can Mongoose "delete" non-existing documents?Mongoose 如何“删除”不存在的文档?
【发布时间】:2017-10-18 11:58:24
【问题描述】:

代码:

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 这样的垃圾时才会抛出错误。

谁能告诉我,这是怎么回事,好吗? :)

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    如果您查看相关的 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
      }
    });
    

    【讨论】:

    • 我想你的意思是if(err || !doc),不是吗?
    猜你喜欢
    • 2019-07-16
    • 2011-08-14
    • 1970-01-01
    • 2015-03-27
    • 2020-01-31
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多