我能找到的所有用于渲染带有 Mongoose 结果的页面的东西都说要这样做:
users.find({}, function(err, docs){
res.render('profile/profile', {
users: docs
});
});
我怎样才能从查询中返回结果,更像这样?
var a_users = users.find({}); //non-working example
这样我就可以在页面上发布多个结果?
喜欢:
/* non working example */
var a_users = users.find({});
var a_articles = articles.find({});
res.render('profile/profile', {
users: a_users
, articles: a_articles
});
这个可以吗?
最佳答案
您正在尝试强制使用同步范式。就是行不通。 node.js 在大多数情况下是单线程的——当 io 完成时,会产生执行上下文。信令通过回调进行管理。这意味着您要么拥有嵌套回调、命名函数或流控制库,以使事情看起来更漂亮。
https://github.com/caolan/async#parallel
async.parallel([
function(cb){
users.find({}, cb);
},
function(cb){
articles.find({}, cb);
}
], function(results){
// results contains both users and articles
});
https://stackoverflow.com/questions/6180896/