NodeJS - 如何将变量发送到嵌套回调?(MongoDB查找查询)

Rep*_*sto 5 javascript function callback mongodb node.js

我想在另一个结果集中使用查找查询的结果集.我无法用英语很好地解释这种情况.我会尝试使用一些代码.

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++;
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

首先,我找到所有找到名叫约翰的人.然后我把那些人当作所有的约翰.

其次,我由一个不同获得每一个约翰斯所有的宠物找到查询.

在第二次回调中,我再一次得到每只宠物.但是当我想要显示哪个约翰是他们的主人时,我总是得到同样的约翰.

所以,问题是:如何将每个John分别发送给第二个嵌套回调,他们将作为真正的所有者和宠物聚集在一起.

我需要复制每个约翰,但我不知道我怎么能这样做.

rob*_*lep 5

Javascript没有块范围,只有函数范围.而不是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 );
      });
    });
  });
});
Run Code Online (Sandbox Code Playgroud)