[英]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.