如何在一个app.get请求中返回多个Mongodb集合?

时间:2017-04-24 16:02:06

标签: angularjs node.js mongodb express

我需要从两个不同的mongodb集合中将两组数据加载到一个页面上 通过mongoose发出请求的路由页面如下所示

app.get('/testPage', function(req,res){
    dbReadOne.find({}, '', function(error, dataOne){
        res.json(dataOne);
    });
    dbReadTwo.find({},'', function(error, dataTwo){
        res.json(dataTwo);
    });
});

My Angular工厂看起来像这样

app.factory('dataOneFactory', function($resource){
    return $resource('testPage/:dataOne', {}, {
        query: { method: 'GET', params:  {symbol: 'dataOne'}, isArray: true}
    })
});
app.factory('dataTwoFactory', function($resource){
    return $resource('testPage/:dataTwo', {}, {
        query: { method: 'GET', params:  {customList: 'dataTwo'}, isArray: true}
    })
});

我完全不知道如何做到这一点。我很感激我能就这个问题提出任何建议。谢谢。

1 个答案:

答案 0 :(得分:1)

由于Node.js本质上是异步的, dbReadOne.find 函数是异步运行的,因此你应该在第一个的回调中调用下一个 dbReadOne.find dbReadOne.find 功能。

示例:

app.get('/testPage', function(req, res){
     dbReadOne.find({}, '', function(errorOne, dataOne){
         if(errorOne)
            throw new Error(errorOne);
         dbReadTwo.find({},'', function(errorTwo, dataTwo){
            if(errorTwo)
                throw new Error(errorTwo);
            res.json({
                dataOne: dataOne,
                dataTwo: dataTwo
            });
         });
     });
});