return variable from a nested callback in node.js

核能气质少年 提交于 2020-02-08 05:34:06

问题


I have the results of my query in result but I can not pass it to browser, it is showing empty. how can I return the result to res.send('result')?

myApp.get('/agg',function(req,res){
MongoClient.connect(url, function(err, db) {
    // Execute aggregate, notice the pipeline is expressed as an Array
    db.collection('projects').aggregate([{$match:{school_state:"DC"}}, {$group:{_id: "$primary_focus_subject",total_amount:{$sum: "$total_donations"}}}],function(err,result){
    console.log(result);

    db.close();
    });
});

res.send(result);

});


回答1:


You have 2 solutions :

  • put res.send(result); where you have console.log(result)

  • having a promise wrapping your MongoClient.connect like this :

    let promise = new Promise((resolve,reject)=>{
      MongoClient.connect(url,function(err,db){
        db.collection('projects').aggregate([{$match:{school_state:"DC"}}, {$group:{_id: "$primary_focus_subject",total_amount:{$sum: "$total_donations"}}}],function(err,result){
          if(err) reject(err)
          resolve(result);
        });
      });    
    })
    


来源:https://stackoverflow.com/questions/43697903/return-variable-from-a-nested-callback-in-node-js

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!