Reputation: 123
// 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);
});
});
}
//I want to display the resultArray on loading view(restful.ejs).But the problem is when I first redirect to the page.It is not showing any value.But upon clicking the same page its been showing me the details.What I feel is on the first load it is not storing the values in session.How can we solve this issue?I am trying this for long time.
Upvotes: 0
Views: 84
Reputation: 2061
That is because you are rendering outside the async callback function Change your code like this
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)
});
It is storing correct in the session, that part is working but since the first time you are rendering outside the async callback, it has no value.
Upvotes: 1