我正在使用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);
时,它只输出[object Object]。如何让它显示正在返回的真实值?
答案 0 :(得分:0)
你可以像
那样做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); });
});