使用mongoose在一个页面中搜索不同的模型

时间:2013-09-23 21:27:41

标签: node.js mongoose

我正在使用express和mongoose在我的主页上列出猫

app.get('/', function(req, res) {
    Model.cats.find(function(err, ret) {
        res.render('home.jade', {cats: ret});
    })
});

现在我可以说我想展示猫和狗。我怎么能这样做?毕竟find函数是异步的,所以我不知道如何准备响应。

1 个答案:

答案 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方法。