2016-10-17 10 views
0

で約束を使用する方法、私は私のコンソールで値を見ることができますが、私が得た応答が空である、私はそれがために約束のものであってもよいthoink ....以下のコードをrunnigことでマングース

私のコード、

exports.getcatlist = function(req, res) { 
var params = req.params, 
item = { 
    'status': '1', 
    'type': 'categories' 
}; 
Categories.find(item,function (err, result) { 
    if (err) { 
     return 
    } 
    if (result) {  
     var profiles = []; 
     var categories_to_get = [] 
     var categories = [] 
     for (var i in result) { 
      var id = result[i]._id;console.log(id) 
      var id = id.toString(); 
      categories_to_get.push(get_category(id, profiles)) 
     } 
     Promise.all(categories_to_get) 
      .then(() => { 
       console.log('final vals'+categories_to_get) 
       res.json({status: 'success', data: profiles}); 
      }) 
    } //end of if loop 
    else { 
     response = { 
      status: 'fail', 
      data: [] 
     }; 
    } 

}) 
function get_category(id, profiles) { 
     var profiles = []; 
     return new Promise(function (resolve, reject) { 
      var item = { 
        'categoryid' : id, 
        'status': '1', 
        'type': 'topics', 
       }; 
       Categories.count(item,function (err, result) { 
        if (err) { 
         reject(err) 
         return 
        } 
        if (result == []) { 
         profiles.push(result) 
         resolve() 
        } 
        if (result) { 
         profiles.push(result) 
         resolve() 
        } else { 
         reject() 
        } 
       }); 
     }) 
    } 
} 

上記のコードをrunnigことで、私は私のコンソールで値を見ることができますが、私が得た応答は空

`{ 
    "status": "success", 
    "data": [] 
    }` 

である私は、なぜ私は空のように私のデータを取得していますわかりません、誰でも助けを提案できますか...

+1

あなたは[] =プロファイル '関数GET_CATEGORY(ID、プロファイル){ VARプロファイルを再宣言されている;'何度と再び。分かりやすくするために、参照の代わりに値を解決する必要があります。 –

答えて

0

申し訳ありませんが、あなたのコードはかなり面倒です。ここでは解決策ときれいなアプローチですが、私が強くお勧めします。asyncあなたが達成しようとするものにはライブラリを使用してください。

//npm install async --save 
var async = require('async'); 

exports.getcatlist = (req, res) => { 
    var params = req.params; 
    Categories.find({ 
     status: '1', 
     type: 'categories' 
    }, (err, result) => { 
     if(err) 
      return res.json({status: 'fail'}); 

     var profiles = []; 
     async.each(result, (id, cb) => { 
      Categories.count({ 
       categoryid: id, 
       status: '1', 
       type: 'topics' 
      }, (ierr, val) => { 
       if(ierr) 
        return cb(ierr); 
       profiles.push(val); 
       cb(); 
      }); 
     }, (eachError) => { 
      if(eachError) 
       return res.json({status: 'fail'}); 
      res.json({status: 'success', data: profiles}); 
     }); 
    } 
} 
関連する問題