【发布时间】:2016-06-13 12:20:52
【问题描述】:
我不确定我需要如何做我想做的事。我的架构是这样的:
var userObj = mongoose.Schema({
'timestamp':{type: Date, default: Date.now()},
'password':{type:String, required:true},
"userName":{type:String, required:true, unique:true}
});
var groupSchema = mongoose.Schema({
'creator':String,
'members':Array, //contains the _id of users added to the group
'admins':Array,
'name':String,
'timestamp':{type: Date, default: Date.now()},
'description':String
});
其中成员架构有一个包含用户 ID 的数组。我需要从组文档中取出数组并取回用户名。
我从使用 mongoose .find() 方法的循环开始,并将结果推送到一个数组中 - 但正如我预期的那样,该数组在回调函数的范围之外是空的。
var dat = [];
for(var i = 0; i<passed.payload.length;i++){
user.find({'_id':passed.payload[i]},'userName',function(err,result){
if(err){
console.log(err);
}else{
dat.push(result);
}
})
}
//res.send(dat)
console.log(dat);
我不确定如何执行此操作 - 我考虑使用 .find 提取所有用户 ID,然后运行数组以仅返回匹配项。拉取完整的用户表然后对其进行测试似乎是一种资源浪费。
是否有更复杂的查询可以与 mongoose 一起使用,以使用 _id 数组进行匹配来提取这样的数据?
【问题讨论】: