2016-07-18 6 views
0

配列var filteredArray = [];を宣言した以下のコードがあります。私は、RestArtコールのコールバック関数でデータをプッシュするためにfiltersArrayを使用します(これはforループ内で発生します)。 forループが終了すると。私はfilteredArrayを私の角度コントローラに送りたいと思います。ここに私のコードです。私がconsole.log(filteredArray)をforループの外に置くと、空の配列が返されます。誰かが助けてくれますか?REST呼び出し内の配列へのアクセス

assignedToMe: function(req, res) { 
    CustomerUser.find({ 
    userEmail: { 
     $in: req.body.userEmail 
    } 
    }, function(err, docs) { 

    var filteredArray = []; 
    for (var i = 0; i < docs.length; i++) { 
     var url = config.pythiaApi + config.pythiaApiPrefix + '/quotes/' + docs[i]['quoteId']; 
     if (req.originalUrl.lastIndexOf('?') !== -1) { 
     url += req.originalUrl.substr(req.originalUrl.lastIndexOf('?')); 
     } 
     restClient.get(url, function(body, response) { 
     filteredArray.push(body.data) 
     }) 
    } 

    console.log(filteredArray) // Gives empty array 
    res.status(200).json({}); 

    }); 
} 

答えて

1

非同期呼び出し用に非同期ループを使用します。たとえば、async.times

assignedToMe: function(req, res) { 
    CustomerUser.find({ 
     userEmail: {$in: req.body.userEmail} 
    }, function(err, docs) { 
     var filteredArray = []; 
     async.times(docs.length, function(i, next){ 
      if(err) return next(err); 
      var url = config.pythiaApi + config.pythiaApiPrefix + '/quotes/'+docs[i]['quoteId']; 
      if (req.originalUrl.lastIndexOf('?') !== -1) { 
       url += req.originalUrl.substr(req.originalUrl.lastIndexOf('?')); 
      } 
      restClient.get(url, function (body, response) { 
       next(null, body.data) 
      }) 
     }, function(err, result){ 
      // result contains your array 
      res.status(200).json({}); 
     }) 
    }); 
} 
+0

ありがとうございます。それはうまくいった! :) – JaRavi

関連する問題