0

まず、jsonにデータの配列があります。たとえば、var a = [{'name':'jack'、'age':15}、{'name':'tom'、'age':30}] ;

さらに、mongooseで実装されているmongodbベースのデータベースがあります。データベース内には、ユーザーの他の情報を格納するユーザーコレクションがあります。

だから今、私は上記の人々のリストの情報を照会したいと思います。

for(var i=0;i<a.length;i++){
    console.log('time schedule '+"   "+a[i].name+"   "+a[i].age);                               
    model.findOther(a[i].name,function(err,data){ 
        // I can get the data from mongodb  
          console.log("time schedule data:"+"   "+data.otherinfo+"  ");
       --------------------------------------------------------------------------------
       //however the problem arises that I can not get the a[i].age inside the callback
          console.log(a[i].age );

    });                                             
}

正しいデータを取得するのはちょっと間違っていることを知っているので、非同期でコードを書く方法を誰かが助けてくれますか?

4

1 に答える 1

2

関数をクロージャに入れ、関連する変数をパラメータとしてクロージャにプッシュする必要があります。

for(var i=0;i<a.length;i++){
    console.log('time schedule '+"   "+a[i].name+"   "+ai].age);
    (function(item){
        model.findOther(item.name,function(err,data){ // <-- here you could use 'a[i]' instead of 'item' also
            console.log("time schedule data:"+"   "+data.otherinfo+"  ");
            console.log(item.age );  // <-- here you must use 'item'
        });
    }(a[i])); // <-- this is the parameter of the closure
}
于 2013-03-06T08:50:20.873 に答える