将多个文档中的字段保存到对象

时间:2016-03-19 12:31:19

标签: javascript node.js mongodb mongoose

我在我的项目中使用Mongoose进行MongoDB操作。我试图:

  • 查找与查询匹配的每个文档
  • 创建一个新对象(让我们称之为objects
  • 为找到的每个文档在objects
  • 中创建一个新对象
  • 将找到的文档中的字段保存到创建的对象

这很好用。但我也想:

  • 为我的objects内保存的每个对象找到一个与另一个集合中的查询匹配的文档
  • 如果找到文档,请将字段保存到以前创建的对象objects(作为新密钥)

第二部分的代码如下:

for(var i in objects) {
  if(objects.hasOwnProperty(i)) {
    Model.findOne({name: objects[i].name, id: objects[i].id}, function(e, document) {
      if(e) console.error(e);
      if(document) {
        console.log("Found matchind document"); //This is showed for each object, as expected.
        objects[i].newField = document.someData;
        objects[i].evenNewerField = document.someMoreData;
      }
    });
  }
}
console.log(objects); //This shows old data from previous operations, no new data from the for loop

1 个答案:

答案 0 :(得分:1)

你的问题不是你的猫鼬用法,你应该深入了解Javascript范围和异步。在调用console.log的代码中,对象尚未更新。