繁体   English   中英

猫鼬参考对象找到

[英]Mongoose find with reference to object

我在循环中找到了:

for(var idx in items){
    var item = items[idx];

    Model.find({'_id': item.id}, function(err, matches){
          console.log(item); // Points to the last item in items instead of
                             // expected item, since find is asynchronous
    });
}

如您所见,由于find是异步的,因此无法获得对var item的可靠引用。

我可以继续进行操作,并通过回调内的匹配对象在items数组中手动​​查找它,但这似乎并不是一种有效的方法。

如果有任何方法可以将对象“附加”到调用中,那么我可以通过很棒的回调将其返回。

有任何想法吗 ?

您需要的是一个闭包,因为在调用任何回调之前都将完成循环及其item

for(var idx in items){
  (function(item){
    Model.find({'_id': item.id}, function(err, matches){
      console.log(item);
    });
  })(items[idx]);
}

这应该与以下内容大致相同(假设项目是一个数组):

items.forEach(function(item){
  Model.find({'_id': item.id}, function(err, matches){
    console.log(item);
  });
})(items[idx]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM