Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合并两个mongo查询的输出_Javascript_Node.js_Mongodb_Express_Mongodb Query - Fatal编程技术网

Javascript 合并两个mongo查询的输出

Javascript 合并两个mongo查询的输出,javascript,node.js,mongodb,express,mongodb-query,Javascript,Node.js,Mongodb,Express,Mongodb Query,我使用的是node.js和express,我希望合并并返回来自两个不同集合的两个mongodb查询的输出。 每个集合都有不同用户的数据,我想在列表中显示所有用户的数据 我试过了 router.get('/dataAll', function(req, res) { var db = req.db; db.collection('data1').find().toArray(function(err, items) { var firstQuery = items;

我使用的是node.js和express,我希望合并并返回来自两个不同集合的两个mongodb查询的输出。 每个集合都有不同用户的数据,我想在列表中显示所有用户的数据

我试过了

router.get('/dataAll', function(req, res) {
    var db = req.db;
    db.collection('data1').find().toArray(function(err, items) {
        var firstQuery = items;
        console.log('first query:'+items);
        db.collection('data2').find().toArray(function(err, items2) {
            console.log('second query:'+items2);
            var itemsTotal=[];
            itemsTotal.concat(JSON.stringify(items));
            itemsTotal.concat(JSON.stringify(items2));
            console.log('combined query:'+itemsTotal);
            res.json(itemsTotal);
        });
    });
});
但我只是在itemsTotal中得到一个空白数组。 如何将输出连接在一起

另外,当我执行console.log'first query:'+items;,它只输出[对象]。如何让它显示返回的真实值?

您可以像这样做

router.get('/dataAll', function(req, res) {
    var db = req.db, itemsTotal = [], s1,s2, closed = [false,false];
    var adding = function(data){
      itemsTotal.push(data);
    };
    var closing =function(i){
      closed[i] = true;
      if(closed[0]&&closed[1]) return res.json(itemsTotal);
    };
    s1 = db.collection('data').find().stream();
    s1.on('data', adding);
    s1.on('close',function(){ closing(0); });
    s2 = db.collection('data1').find().stream();
    s2.on('data', adding);
    s2.on('close',function(){ closing(1); });
});
我试过了,但在GET请求中出现了“500:内部服务器错误”。