Mongoose save()方法不更新mongo
我的猫鼬系列如下所示: 集合名称:testMongoose save()方法不更新mongo,mongoose,Mongoose,我的猫鼬系列如下所示: 集合名称:test [ { _id: xxx, alerts: { level1 : { list: [ {'name': 'John'},{'name':'balm'] } } }, { _id: yyy, alerts: { level1 : { list: [ {'name
[
{
_id: xxx,
alerts: {
level1 : {
list: [ {'name': 'John'},{'name':'balm']
}
}
},
{
_id: yyy,
alerts: {
level1 : {
list: [ {'name': 'cindy'},{'name':'terry']
}
}
},
]
我正在编写一个函数,该函数将在列表的名称字段中查找所有“Johns”,并将其替换为“Joan”
到目前为止,我有以下脚本:
var mongoose = require('mongoose'),
,testModel = mongoose.model('test');
testModel.find(query, function(err,docs){
docs.forEach(function(doc){
if(doc.alerts.level1.list.length>0) {
var nameChagned = false;
doc.alerts.level1.list.forEach(function(obj){
if(obj.name === 'John') {
obj.name = 'Joan';
namechanged = true;
}
}
if(nameChanged) { doc.save();}
}
}
}
在脚本结束时,当我检查集合时,值不会更新。
有什么线索可以帮我找到吗
谢谢,在上面的源代码中,您永远不会更新
nameChanged
变量,因此doc.save()
命令永远不会运行。您在namechanged=true
行中引入了一个全局变量(注意JavaScript变量区分大小写)。在声明中,您使用变量名nameChagned
,因此nameChanged
变量的计算结果总是错误的
对doc.save()
方法使用回调也是一种良好的做法:
doc.save(function (err, doc, numberAffected) {
if (err) {
return handleError(err);
}
});
因此,您可以处理保存文档时发生的任何错误。看
您还应该检查传递给find函数的
查询
。也许你找不到任何文件,以便<代码> DOCs<代码>参数是空的。 Hy@ RunTimeN0如果这个答案已经解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。