2017-02-22 11 views
1

ここでは、SQLクエリ呼び出しでの関数です。 すべてのクエリが完了した後にのみリターンコールバックが必要です。 しかし、空の配列を返します 結局、データの配列を返す方法は? `コールバックは空の配列を返すjs

function getUserSales(days, callback){ 
    getUserByLastLoginDay(days, function (users) { 
    var userArray = []; 
    _.each(users, function (user) { 
     getMostFavoredCat(user.id, function (cat) { 
     if(!cat || cat.length == 0){ 
     return false; 
     } else { 
      user.mostFavoredCat = takeMostRepeatingObj(cat); 
     } 
     getRelatedSaleByCat(user.id, user.mostFavoredCat.id, function (sales) { 
      user.sales = sales; 
      userArray.push(user) 
     }) 
     }) 
    }) 
    callback(userArray); 
    }) 
} 

`

答えて

1

コールバック関数の最初のパラメータは常にエラー

callback(null,userArray) 

であるあなたは、より良い制御フローのためのasync.jsの使用

npm i async --save

を作ることができます
const async = require('async'); 

function getUserSales(days, callback){ 
    getUserByLastLoginDay(days, function (users) { 
    var userArray = []; 
    async.each(users, function (user, cb) { 
     getMostFavoredCat(user.id, function (cat) { 
     if(!cat || cat.length == 0){ 
     return false; 
     } else { 
      user.mostFavoredCat = takeMostRepeatingObj(cat); 
     } 
     getRelatedSaleByCat(user.id, user.mostFavoredCat.id, function (sales) { 
      user.sales = sales; 
      userArray.push(user) 
      cb(); 
     }) 
     }) 
    }, (err) => { 
     if (err) { 
      return callback(err); 
     } else { 
      callback(null, userArray); 
     } 
    }) 
    }) 
} 
+0

おかげで、しかし、私は知っています。そして、それは何の助けにもなりませんでした –

+0

'userArray'にはデータが含まれていますので、' getUserSales'関数呼び出し –

+0

を置くことができますか?コールバック(null、userArray)は空の配列を返します。 –

0

私はそれが動作すると思います:

function getUserSales(days, callback){ 
getUserByLastLoginDay(days, function (users) { 
    var userArray = []; 
    _.each(users, function (user) { 
     getMostFavoredCat(user.id, function (cat) { 
     if(!cat || cat.length == 0){ 
     return false; 
    } else { 
     user.mostFavoredCat = takeMostRepeatingObj(cat); 
    } 
    getRelatedSaleByCat(user.id, user.mostFavoredCat.id, function (sales) { 
     user.sales = sales; 
     userArray.push(user) 
    }) 
    }) 
callback(userArray); 
}) 
}) 
} 
関連する問題