2016-09-21 117 views
0

我想打电话给其他功能,以及如何获得该函数的结果,如何调用一个funtion在另一个函数中的Node.js

功能1,

exports.getprofiledatalistbyid = function (req, res) { 
    var params = req.params; 
    var profile= db.collection('profile'); 
    var requests= db.collection('requests'); 
    profile.find().toArray((err, result) => { 
    if (err){ return console.log(err) 
    } 
     if(result){ 
        // console.log(result) 
        for(var i in result){ 
        var id = result[i]._id; 
        var id = id.toString(); 
        exports.getdetails(id) 
        } 
       } 
     else{ 
      response = {status:'fail',data:[] }; 
     } 
     // res.send(response); 

    }); 
}; 

功能2,

exports.getdetails = function (req,res) { 
    // var profile= db.collection('profile'); 
    var requests= db.collection('requests'); 
    var params = req.params; 
    var id = params.id; 
    requests.find({ $or:[ {'sent_id':id}, {'recieved_id':id}]}).toArray((err, result) => { 
    if (err){ return console.log(err) 
    } 
     if(result){console.log(result) 
      return result; 
       } 
     else{ 
      response = {status:'fail',data:[] }; 
     } 

    }); 
}; 

路线,

var profile = require('../controller/user'); 
router.get('/getprofiledatalistbyid/:id?', cors(), profile.getprofiledatalistbyid); 

所以在这里我想使用函数1中的函数2的结果。

有人可以帮助我吗?

谢谢。

+0

的[我如何返回从一个异步调用的响应?(可能的复制http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-从异步调用) –

+0

@klp你仍然会得到同样的错误? – abdulbarik

+0

abdulbarik,我正在尝试与承诺的方法,希望它会工作 – klp

回答

1

Use module.exports and call your functions by this

 module.exports = { 
    getprofiledatalistbyid: function(req, res) { 
    var params = req.params; 
    var profile = db.collection('profile'); 
    var requests = db.collection('requests'); 
    profile.find().toArray((err, result) => { 
     if (err) { 
     return console.log(err) 
     } 
     if (result) { 
     // console.log(result) 
     for (var i in result) { 
      var id = result[i]._id; 
      var id = id.toString(); 
      this.getdetails(req,res,function(err,result){ 
       if(!err) 
      console.log(result); 
      }); 
     } 
     } else { 
     response = { 
      status: 'fail', 
      data: [] 
     }; 
     } 
     // res.send(response); 

    }); 
    }, 

    getdetails: function(req, res,callback) { 
    // var profile= db.collection('profile'); 
    var requests = db.collection('requests'); 
    var params = req.params; 
    var id = params.id; 
    requests.find({ 
     $or: [{ 
     'sent_id': id 
     }, { 
     'recieved_id': id 
     }] 
    }).toArray((err, result) => { 
     if (err) { 
     return callback(err) 
     } 
     if (result) { 
     console.log(result) 
     return callback(null,result); 
     } else { 
     callback(null, { 
      status: 'fail', 
      data: [] 
     }); 
     } 

    }); 
    } 
}; 
+0

好吧,但我怎么能得到this.getdetails()的结果;功能 – klp

+0

这将工作,如果两个文件都在同一个文件 – abdulbarik

+0

你可以编辑我的代码请... – klp

相关问题