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