我想获取更新的文档。这是我的原始代码,它成功更新但不返回文档。
collection.update({ "code": req.body.code },{$set: req.body.updatedFields}, function(err, results) {
res.send({error: err, affected: results});
db.close();
});
我使用了 toArray
函数,但这给出了错误“Cannot use a writeConcern without a provided callback”:
collection.update({ "code": req.body.code },{$set: req.body.updatedFields}).toArray( function(err, results) {
res.send({error: err, affected: results});
db.close();
});
有什么想法吗?
最佳答案
collection.update()
只会将受影响的文档数报告给它自己的回调。
要在修改时检索文档,您可以使用 collection.findOneAndUpdate()
而是(以前的 .findAndModify()
)。
collection.findOneAndUpdate(
{ "code": req.body.code },
{ $set: req.body.updatedFields },
{ returnOriginal: false },
function (err, documents) {
res.send({ error: err, affected: documents });
db.close();
}
);
returnOriginal
选项(或 Mongoose 的 new
)允许您指定将找到的文档的哪个版本(原始 [默认] 或更新)传递给回调。
returnOriginal
在版本 3.6
中已弃用。使用 returnDocument: "before"|
。3.6
及更高版本的“之后”
Disclaimer: This answer currently refers to the Node.js Driver as of version 3.6. As new versions are released, check their documentation for possibly new deprecation warnings and recommended alternatives.
关于node.js - 在MongoDB中更新和返回文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24747189/