从node.js中的函数传递值

//这是我的模特

module.exports.show_deatils=function(req,res,callback){ var resultArray=[]; mongo.connect(url,function(err,db){ assert.equal(null,err); var cursor=db.collection('users').find(); cursor.forEach(function(doc,err){ assert.equal(null,err); resultArray.push(doc); console.log("came inside the function") return resultArray; }); }); } 

//这是我的路线

  router.get('/restful', function(req, res){ console.log("before"); User.show_deatils(function(req,res){ console.log(resultArray); req.session.resultArray=resultArray; }); res.render('restful',{items:req.session.resultArray}); }); 

//在这里,我正在调用一个函数从路由到模型(show_details)。我面临的问题是我正在调用函数。正在调用方法。数组“resultArray”已填充值。但是我没有能够返回特定的价值。我们可以做到这一点?

使用callback函数来返回数据。

 module.exports.show_deatils=function(req,res,callback){ var resultArray=[]; mongo.connect(url,function(err,db){ assert.equal(null,err); var cursor=db.collection('users').find(); cursor.forEach(function(doc,err){ assert.equal(null,err); resultArray.push(doc); console.log("came inside the function") }); callback(null, resultArray); }); } 

=======================

 router.get('/restful', function(req, res){ console.log("before"); User.show_deatils(req, res, function(err, resultArray){ if(!err) { console.log(resultArray); req.session.resultArray=resultArray; } }); res.render('restful',{items:req.session.resultArray}); }); 

您也可以抛光错误逻辑,使其强大。

尝试这个:

//该模型

我添加了对callback的调用:

 module.exports.show_deatils=function(req,res,callback){ var resultArray=[]; mongo.connect(url,function(err,db){ assert.equal(null,err); var cursor=db.collection('users').find(); cursor.forEach(function(doc,err){ assert.equal(null,err); resultArray.push(doc); console.log("came inside the function") return resultArray; }); //now call the callback <---- callback(resultArray); }); } 

//路线

User.show_details需要3个参数,最后一个是要执行的callback:

  router.get('/restful', function(req, res){ console.log("before"); User.show_deatils(req, res, function(resultArray){ console.log(resultArray); req.session.resultArray=resultArray; res.render('restful',{items:req.session.resultArray}); }); });