我想在另一个结果集中使用查找查询的结果集。我无法用英语很好地解释这种情况。我会尝试使用一些代码。
People.find( { name: 'John'}, function( error, allJohns ){
for( var i in allJohns ){
var currentJohn = allJohns[i];
Animals.find( { name: allJohns[i].petName }, allJohnsPets ){
var t = 1;
for( var j in allJohnsPets ){
console.log( "PET NUMBER ", t, " = " currentJohn.name, currentJohn.surname, allJohnsPets[j].name );
t++;
}
}
}
});
首先,我找到所有名为 John 的 find 人。然后我把这些人当成allJohns。
其次,我在不同的find查询中一一获取每个约翰的所有宠物。
在第二次回调中,我将每只宠物都一一拿到。但是当我想显示哪个 John 是他们的所有者时,我总是得到同一个 John。
所以,问题是:如何将每个 John 分别发送到第二个嵌套回调,并且他们将作为真正的所有者和宠物在一起。
我需要复制每个约翰,但我不知道该怎么做。
最佳答案
Javascript 没有 block 作用域,只有函数作用域。代替 for .. in ..
,使用 forEach
将为每个循环创建一个新范围:
People.find( { name: 'John'}, function( error, allJohns ){
allJohns.forEach(function(currentJohn) {
Animals.find( { name: currentJohn.petName }, function(err, allJohnsPets) {
allJohnsPets.forEach(function(pet, t) {
console.log( "PET NUMBER ", t + 1, " = ", currentJohn.name, currentJohn.surname, pet.name );
});
});
});
});
关于javascript - NodeJS - 如何将变量发送到嵌套回调? (MongoDB 查找查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15527722/