【发布时间】:2019-02-13 05:00:21
【问题描述】:
我一定遗漏了一些东西,但我的 Document.prototype.save() 在 Mongoose 5.2.10 中似乎无法正常工作。
The docs say 回调返回保存的文档。
回调将接收两个参数
err如果发生错误product这是得救了product
对我来说,它似乎是在更新和保存之前返回文档的原始版本。要么我做错了什么,要么文档有点误导或含糊。
调用save后,文档在数据库中更新,但是回调返回的是修改前的旧文档。
我一直在这样调用 save(在异步函数中):
const myDocument = await User.findOne({ name: 'billy' });
const updatedInfo = {
foo: 'update here',
bar: 'some other new stuff'
};
myDocument.update({ $set: updatedInfo }, (err) => { console.log(err) });
myDocument.save((err, savedDoc) => {
if (err) { console.log(err); }
// Should return saved doc here
console.log(savedDoc);
});
像这样:
myDocument.update({ $set: updatedInfo }, (err) => { console.log(err) });
myDocument.save().then((savedDoc) => {
// Should return saved doc here
console.log(savedDoc);
}).catch((err) => { console.log(err); });
但无法让它返回我保存的文档。 savedDoc 最终成为文档的旧版本,而新版本确实保存在数据库中。
【问题讨论】:
-
请查看此链接
https://davidburgos.blog/return-updated-document-mongoose/ -
感谢您提供该链接。我已经看到了,但我实际上是在问一些不同的东西。我不想查询和更新文档,而是想知道如何获取已查询的文档的保存版本。在这里与 Mongoose 人进行了很好的讨论:github.com/Automattic/mongoose/issues/6993
标签: javascript database mongodb mongoose