我遇到了一个关于 Mongoose 的 deleteOne 方法的问题。
问题如下:
- 使用带键的 deleteOne() 删除文档。
- 尝试再次使用具有相同键的 deleteOne() 删除相同的文档,然后该方法没有返回任何错误。
是否有可能以某种方式出错?
如果您能解决这个问题,我将不胜感激。先感谢您。
我遇到了一个关于 Mongoose 的 deleteOne 方法的问题。
问题如下:
是否有可能以某种方式出错?
如果您能解决这个问题,我将不胜感激。先感谢您。
当删除带有键的文档并且它存在时,Mongodb(您使用的 npm mongoose)会使用deleteOne返回以下内容:
{ "acknowledged" : true, "deletedCount" : 1 }
如果您删除已删除的同一个文档,它会返回:
{ "acknowledged" : true, "deletedCount" : 0 }
所以,修改你的代码如下:
await Post.deleteOne({_id: postId}, (err, d) => {
if (err) return res.status(400)
if (d.acknowledged && d.deletedCount == 1)
console.log("Deleted Successfully") // Use your response code
else
console.log("Record doesn't exist or already deleted") // Use your response code
})
Mongo Shell 输出供参考:
> db.post.deleteOne({"_id" : ObjectId("5e8478d86c193bc19f5e4112")})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.post.deleteOne({"_id" : ObjectId("5e8478d86c193bc19f5e4112")})
{ "acknowledged" : true, "deletedCount" : 0 }