我正在使用express和mongoose在我的主页上列出猫
app.get('/', function(req, res) {
Model.cats.find(function(err, ret) {
res.render('home.jade', {cats: ret});
})
});
现在我可以说我想展示猫和狗。我怎么能这样做?毕竟find函数是异步的,所以我不知道如何准备响应。
答案 0 :(得分:1)
如果您加入async
npm module,则非常简单:
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
个。完成后,他们会调用callback
传递任何错误(我刚刚将其作为上面的null
)和查找结果。以这种方式使用命名调用时非常方便,因为结果将放在单个对象的两个属性中,您可以直接将其传递给render
方法。