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