// This is my router.js
router.get('/restful', function(req, res){
console.log("before");
User.show_deatils(req, res, function(err, resultArray){
if(!err){
req.session.resultArray=resultArray;
req.session.save();
}
});
//console.log(req.session.resultArray)
res.render('restful',{resultArray:req.session.resultArray});
});
//This is model.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);
callback(null, resultArray);
});
});
}
//我想在加载视图上显示resultArray(restful.ejs)。但问题是当我第一次重定向到页面时。它没有显示任何值。但是点击同一页面后它一直显示给我详细信息。我觉得第一次加载时它没有在会话中存储值。我们如何解决这个问题?我很长时间都在尝试。
答案 0 :(得分:1)
这是因为您在异步回调函数之外进行渲染 像这样改变你的代码
router.get('/restful', function(req, res){
console.log("before");
User.show_deatils(req, res, function(err, resultArray){
if(!err){
req.session.resultArray=resultArray;
req.session.save();
res.render('restful',{resultArray:req.session.resultArray});
}
});
//console.log(req.session.resultArray)
});
它在会话中存储正确,该部分正在工作,但是自从第一次在异步回调之外渲染时,它没有任何值。