我正在使用 express 和 mongoose 在我的主页中列出猫
app.get('/', function(req, res) {
Model.cats.find(function(err, ret) {
res.render('home.jade', {cats: ret});
})
});
现在假设我也想展示猫和狗。我怎么能做到?find 函数毕竟是异步的,所以我不确定如何准备响应。
如果包含async
npm 模块,则非常简单:
app.get('/', function(req, res) {
async.parallel({
cats: function(callback) {
Model.cats.find(function(err, ret) {
callback(null, ret);
});
},
dogs: function(callback) {
Model.dogs.find(function(err, ret) {
callback(null, ret);
});
}
},
function(err, results) {
// results will be { cats: results, dogs: results}
res.render('home.jade', results);
});
});
上面的技术启动了两个命名cat
的异步请求,一个和另一个dog
。每个函数都会调用你Model
的 s。完成后,他们调用callback
传递任何错误(我刚才放在null
上面)和查找结果。以这种方式使用命名调用时非常方便,因为结果将放置在单个对象的两个属性中,您可以将它们直接传递给render
方法。