app.get('/test’,function(req, res){ category.getTen(function (err, posts) { res.render('test’, { //title: '分类管理’, posts: posts, user: req.session.user, success: req.flash(‘success’).toString(), error: req.flash(‘error’).toString() }); }) category.getCat(function (err, pers) { res.render('test’, { title: '分类管理’, pers: pers, user: req.session.user, success: req.flash(‘success’).toString(), error: req.flash(‘error’).toString() }); })
});
代码如上,两个方法分别加载两个集合的数据,如果单独写没问题,但两个写在一起,就碰到问题了,求解决指导。
-
代码中无法 res.render 两次。根据你的代码,两个 res.render 随机一个执行,另一个无效。
-
应该先获取 ten 和 cat,等两样都获取时,再一起 render。
-
如果用串行思维,那么把下面那句 getCat 嵌套在 getTen 里面就好了。
-
如果并行,可以去试试 async 或者 eventproxy。我个人喜欢后者。
谢谢,我使用你说的async方法, app.get('/test’,function(req, res){ category.getCat(function (err, results) { res.render('test’, { title: '分类管理’, pers: results.one, posts: results.two, user: req.session.user, success: req.flash(‘success’).toString(), error: req.flash(‘error’).toString() }); })
});
后面是这样的,
var date = {};
async.parallel({
one: function(callback) {
setTimeout(function(){
PersonModel.find(function(err,persons){
console.log(“1”);
//console.log(persons);
callback(null, persons);
});
},100);
},
two: function(callback) { setTimeout(function(){ PostModel.find({"title":"aa"},function(err,posts){ console.log(“2”); //console.log(posts); callback(null, posts); }); },200); } }, function(err,results){ //return results; //callback(null, results); //console.log(results); date = results; }) console.log(date); category.getCat = function(callback) { console.log("2"+date); callback(null, date); }
如果你觉得我的代码有改进或者优化的地方,请不吝指出,谢谢