Javascript 合并两个mongo查询的输出
我使用的是node.js和express,我希望合并并返回来自两个不同集合的两个mongodb查询的输出。 每个集合都有不同用户的数据,我想在列表中显示所有用户的数据 我试过了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;
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:内部服务器错误”。