Node.js .forEach循环中mongoose.findOne()的结果错误
我试图获取、操作和保存mongoose文档,但结果不正确。请参阅下面的代码片段:Node.js .forEach循环中mongoose.findOne()的结果错误,node.js,mongoose,Node.js,Mongoose,我试图获取、操作和保存mongoose文档,但结果不正确。请参阅下面的代码片段: x = [{id:"abc", value:10, name:"andy"}, {id:"abc", value:20, name:"mark"}]; x.forEach(function(x){ var amount = x.value; y.findOne({id:x.id}).populate("name").exec(function(err, y){ y.value += amou
x = [{id:"abc", value:10, name:"andy"}, {id:"abc", value:20, name:"mark"}];
x.forEach(function(x){
var amount = x.value;
y.findOne({id:x.id}).populate("name").exec(function(err, y){
y.value += amount;
y.save();
});
});
每次我在forEach
上循环并试图修改y.value
,我都会得到错误的结果
Expected:
loop 1: y.value = 10;
loop 2: y.value = 30;
What I get:
loop 1: y.value = 10;
loop 2: y.value = 20;
如果有人能在这里帮助我,我将不胜感激。没有
id字段
在对象x中。
只是
及
可以有效地检索。
因此,您的查询需要更改
通常在MongoDB中,您只需使用内部_id属性来标识对象。
您必须小心处理正常的foreach循环和异步操作。你最好使用像这样的图书馆
异步的
或者async/await
x.id
其中是json对象x=[{value:10,name:“andy”},{value:20,name:“mark”}]中的id
代码>?刚刚更新了对象。它们都有相同的id…这是假设性的(当然id是唯一的)id必须是一个有效的对象id,像这样ObjectId(“54759eb3c090d83494e2d804”)
x.value
x.name