2017-08-09 9 views
1
var robject=[]; 
async.waterfall([ 
     function (callback) { 
      for(var i in serial){ 
       Router.find({},{r_serial_no:serial[i]},function (err,routerData) { 
        robject = robject.concat(routerData); 
       }); 
      } 
      console.log('Robject= '+robject); //THIS RETURNS NULL 
      callback(null, robject); 
     }, 
     function (blogs, callback) { 
      res.render('index', {dispatched_data:dispatched_data }); 
      callback(null, 'Ended..'); 
     } 

    ], function (err, result) { 
     console.log(result); 
    }); 

を返し、これは私のウォーターフォールモデルで、ここで私は、そのメソッドの外にschema.find方法からrobjectにアクセスする必要があります。それは常にnullを返します.. それにアクセスする方法??がNodejsでデシベル結果にアクセスすることはできません、それは常にnull

+0

まずチェックあなたはrouterDataに何かを得ていますか?実際にはnullになる可能性があります。 –

+0

ループ内でデータを取得する.. – AnonymousObject

+0

なぜループ内でクエリ結果と異なるフィールドを投影するのですか?クエリー**を一度**して、配列内の名前と一致するように単純に "ループする"ことはどうでしょうか?実際の呼び出しが行われる前に、コールバック制御なしで "ループ"が完了する問題があります。しかし、それはまた完全に不要です。 'find()' ** ** once **を実行して、一致するキーから値を抽出するだけです。 –

答えて

1

あなたは構文エラーしている:

for(var i in serial){ 
       Router.find({},{r_serial_no: i},function (err,routerData) { 
        robject = robject.concat(routerData); 
       }); 
      } 

ループは、配列内の次のアイテムとして、各反復

+0

あまりにも動作します。私の問題は、変数にアクセスすることです。もし私が結果を得るためにループの中にログインした場合。 – AnonymousObject

+0

.findメソッドからすべての条件を取り除き、dbからすべての結果を取得しようとしました – Goolishka

+0

それは問題を解決しませんでした。変数にアクセスできない – AnonymousObject

1

を「I」を定義する「ために、」私はここを参照してください問題はfor...inループです。処理がRouter.findでない場合でも、コールバックが発生します。以下のコードを試してみてください。役立つかもしれません。

serialオブジェクトとは異なり、serialsという配列を作成してください。

var robject=[]; 
 
async.waterfall([ 
 
     function (callback) { 
 
      async.each(serials, 
 
       function(serial, localCb){ 
 
       Router.find({},{r_serial_no:serial},function (err,routerData) { 
 
        robject = robject.concat(routerData); 
 
        localCb() 
 
       }); 
 
       }, 
 
       function(err){ 
 
       console.log('Robject= '+robject); 
 
       callback(null, robject); 
 
       } 
 
     ); 
 
     }, 
 
     function (blogs, callback) { 
 
      res.render('index', {dispatched_data:dispatched_data }); 
 
      callback(null, 'Ended..'); 
 
     } 
 

 
    ], function (err, result) { 
 
     console.log(result); 
 
    });

関連する問題