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

saving fields from multiple documents to an object

本文关键字:字段 保存 对象 文档      更新时间:2023-09-26

我在我的项目中使用Mongoose for 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

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