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抛出错误。

请问有人告诉我,请问怎么回事? 🙂

如果你检查相关的Mongoose文档,你会发现它背后的原因:

find匹配的文档,将其删除,将find的文档(如果有)传递给callback。 http://mongoosejs.com/docs/api.html#model_Model.findByIdAndRemove

如果文档不存在于你的数据库Mongoose不会抛出一个错误。 你应该检查callback的第二个参数:

 Goods.findByIdAndRemove(req.params.id, function(err, doc) { if(err || !doc) { // Show an error page } });