gpt4 book ai didi

node.js - Mongoose:如何通过 model.findOneAndUpdate() 检查文档是否被修改

转载 作者:可可西里 更新时间:2023-11-01 09:40:19 26 4
gpt4 key购买 nike

在 mongoose 中,我们可以使用 model.update() 检查更新操作是否修改了文档:

model.update(query, update, function(err, raw){
if (raw.nModified >= 1) console.log('document is modified!')
});

有没有办法对 model.findOneAndUpdate() 做同样的事情?

model.findOneAndUpdate(query, update, { new: true }, function(err, doc){
if (doc) {
// So MongoDB found the document, but is there a way
// to know the document was indeed modified?
}
});

最佳答案

您可以将选项 { passRawResult : true } 传递给 mongoose,以建议 mongoose 传递底层 mongodb 驱动程序的原始结果,在本例中为 mongodb-native,作为回调的第三个参数.

findOneAndUpdate 的 mongodb 原生文档

model.findOneAndUpdate(query, update, { new: true, passRawResult : true }, function(err, doc, res){
// res will look like
// { value: { _id: 56a9fc80a7f9a4d41c344852, name: 'hugo updated', __v: 0 },
// lastErrorObject: { updatedExisting: true, n: 1 },
// ok: 1 }
});

如果由于未找到匹配文档而导致更新失败,则会将 null res 传递给回调。如果文档匹配但字段值与更新 res 对象之前相同,则不会为您提供足够的信息来确定匹配文档的值是否已更新。

关于node.js - Mongoose:如何通过 model.findOneAndUpdate() 检查文档是否被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35059580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com