Mongoose:如何在已解析的 Promise.all() 返回的文档上调用 Model#save?
Mongoose: How to call Model#save on docs returned by resolved Promise.all()?
我有以下代码,它使用猫鼬和蓝鸟作为猫鼬的承诺提供者。我想要实现的是在 Promise.all()
解析时对返回的猫鼬文档数组的每个元素调用 Model#save
,如下所示。这段代码不起作用,我的猜测是,当我调用 doc.save()
时,我并不是在识别为 Mongoose 模型实例的对象上执行此操作。我该如何解决这个问题?
promises = [
User.findById(userId).exec(),
Post.findById(postId).exec()
];
var promisedDocs = Promise.all(promises) // Should resolve to [{ user: {} }, {post: {} }]
.then(function(results) {
results.map(function(result) {
// Extract the first property of object in array element.
var doc = result[Object.keys(result)[0]];
doc.someArrayProp.push(someValue);
doc.save();
});
});
Promise.all
返回的承诺将解析为 [user, post]
,因此您可以直接在 results.map
回调中操作文档:
var promisedDocs = Promise.all(promises) // Resolves to [user, post]
.then(function(results) {
results.map(function(doc) {
doc.someArrayProp.push(someValue);
doc.save();
});
});
我有以下代码,它使用猫鼬和蓝鸟作为猫鼬的承诺提供者。我想要实现的是在 Promise.all()
解析时对返回的猫鼬文档数组的每个元素调用 Model#save
,如下所示。这段代码不起作用,我的猜测是,当我调用 doc.save()
时,我并不是在识别为 Mongoose 模型实例的对象上执行此操作。我该如何解决这个问题?
promises = [
User.findById(userId).exec(),
Post.findById(postId).exec()
];
var promisedDocs = Promise.all(promises) // Should resolve to [{ user: {} }, {post: {} }]
.then(function(results) {
results.map(function(result) {
// Extract the first property of object in array element.
var doc = result[Object.keys(result)[0]];
doc.someArrayProp.push(someValue);
doc.save();
});
});
Promise.all
返回的承诺将解析为 [user, post]
,因此您可以直接在 results.map
回调中操作文档:
var promisedDocs = Promise.all(promises) // Resolves to [user, post]
.then(function(results) {
results.map(function(doc) {
doc.someArrayProp.push(someValue);
doc.save();
});
});