//这是我的模特
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"已填充了值。但我无法返回特定值。我们怎么做?
答案 0 :(得分:1)
试试这个:
//模型
我添加了对回调的调用:
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个参数,最后一个是要执行的回调:
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});
});
});
答案 1 :(得分:0)
使用回调函数返回数据。
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});
});
您还可以修改错误逻辑以使其健壮。