我正在尝试更新forEach()
循环内的所有文档,但更新没有发生。我正在记录每次迭代以确保forEach()
正在工作,而且确实如此。但是,由于某些原因,update()
无效。
这是我的代码:
myModelSchema.methods.updateMyModel = function (cb) {
var myModel = this.model('MyModel');
myModel.find({}, function (err, items) {
items.forEach(function (item) {
console.log('item._id = ' + item._id);
myModel.update(
{
_id: item._id
},
{
$set: {
"some_array.0.some_field": item.some_field
}
}
);
})
});
};
如上所述,我看到console.log()
,但文档未更新。我做错了什么?
答案 0 :(得分:0)
正如Neil Lunn指出的那样,我没有回调。这是解决方案:
myModel.find({}, function (err, items) {
items.forEach(function (item) {
myModel
.update(
{
_id: item._id
},
{
$set: {
"some_array.0.some_field": item.some_field
}
}
)
.exec()
.then(function (data) {
console.log('It works');
})
.catch(function (err) {
console.log(err);
});
})
});
我需要使用同一文档中的字段值更新文档中的字段。上面的代码可以使用。