Node.js Mongoose:使用数据数组进行查询并返回单个数组
我正在将Mongoose与Express.js一起使用 我有两个收藏: i) 收集一个模式Node.js Mongoose:使用数据数组进行查询并返回单个数组,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在将Mongoose与Express.js一起使用 我有两个收藏: i) 收集一个模式 用户ID 龋齿 ii)集合B模式 龋齿 卡纳姆 在集合A中,我将存储用户拥有的汽车数量 示例:如果用户XYZ有2辆车,我将创建2个文档,每个文档都有唯一的车ID 当调用REST-get方法时,我希望返回userID、carID和carName 但是,我无法查询多个集合并将它们合并到一个结果中 由于代码的异步性,我当前的方法不起作用: var totalCar = [] CollectionA.fi
- 用户ID
- 龋齿
- 龋齿
- 卡纳姆
var totalCar = []
CollectionA.find({
userId: userId
}, function(err, data){
/*Wrong code here, how to fix it?????
for(var i = 0; i < data.length; i++){
CollectionB.find({
}, function(err, car){
totalCar.push(car.carName)
})
}*/
res.json({
userId: userId,
car: totalCar
})
})
var totalCar=[]
收藏({
userId:userId
},函数(错误,数据){
/*这里的代码错误,如何修复它?????
对于(变量i=0;i
如何在查询中从另一个集合进行查询,并将来自另一个集合的查询合并为单个结果并发送给用户?对于您的特定问题,可以在mongodb中使用“$in”查询
var totalCar = [];
CollectionA.find({
userId: userId
}, function(err, data){
var cardIds = [];
for(var i = 0; i < data.length; i++){
cardIds.push(data[i].cardId);
}
CollectionB.find({$in:cardIds}, function(err, cards) {
for (var i = 0; i < cards.length; i++)
totalCar.push(cards[i].carName);
res.json({
userId: userId,
car: totalCar
});
});
});
var totalCar=[];
收藏({
userId:userId
},函数(错误,数据){
var cardIds=[];
对于(变量i=0;i
但一般来说,如果您正在寻找一种在同步模式下执行代码的方法,您可以查看此模块:有关使用Mongoose的信息:
CollectionA.find({
userId: userId
}, function(err, data){
var carIds = [];
for(var i=0; i < data.length; i++){
carIds[i] = data[i].carId;
}
CollectionB.find()
.where('carId')
.in(cardIds)
.exec(function(err, carModel){
... //get all the carModel in array
})
CollectionA.find({
userId:userId
},函数(错误,数据){
var carIds=[];
对于(变量i=0;i
谢谢!请确认一下,使用$in不是会在同步模式下查询吗???您的意思是在异步模式下查询,对吧>使用github中的模块?mongodb的回调始终是异步的。通过使用“异步”模块,它可以帮助您使代码看起来像同步的。