问题
I have created models called (user.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);
});
});
}
router.get('/restful', function(req, res){
User.show_deatils(function(req,res,resultArray){
req.session.resultArray=resultArray;
console.log(resultArray);
});
res.render('restful');
});
I have created a method("show_details")
in models user.js
and I am calling that particular function in routes. whenever the page (restful) gets loaded I want the data resultArray
to be displayed. But I am stuck here.
Can you please suggest me how to solve the issue?
回答1:
On your res
object, you need to pass the variable resultArray
in your render function, so it becomes available to use in your template.
Something like:
res.render('restful', {var_in_ejs_template: resultArray});
This is thoroughly documented in express.js's documentation: link
Also, don't put the result in the res.session
property. Looks dirty.
回答2:
you user module show_deatils takes two parameters, you are not passing any, and in callback you are not using,
user.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(resultArray);
});
}
route
router.get('/restful', function(req, res){
User.show_deatils(req,res,function(resultArray){
req.session.resultArray=resultArray;
console.log(resultArray);
res.render('restful');
});
});
来源:https://stackoverflow.com/questions/42486309/how-to-pass-function-value