首页 文章

在.forEach循环中使用mongoose .findOne()的结果错误

提问于
浏览
-1

我试图获取,操纵和保存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 += 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;

如果有人能帮助我,我将不胜感激 .

1 回答

  • 0

    没有

    id字段

    在对象x中 . 只是

    x.value
    

    x.name
    

    有效检索 . 所以你的查询需要改变 .

    通常在MongoDB中,您只需使用内部_id属性来标识对象 . 你必须小心正常的foreach循环和异步操作 . 你最好使用像这样的库

    异步

    或async / await

相关问题