【发布时间】:2015-07-22 02:08:28
【问题描述】:
我正在 MEAN.js 样板上开发一些应用程序,但我遇到了一个我自己无法解决的问题 :( 我有以下数据库方案:
var UserSchema = new Schema({
profession: {
type: Schema.ObjectId,
ref: 'Profession'
},
game: {
type: Schema.ObjectId,
ref: 'Game'
}
};
var ProfessionSchema = new Schema({
assignedTaskCategories: [{
type: Schema.ObjectId,
ref: 'TaskCategory'
}]
});
var TaskCategorySchema = new Schema({
professions: [{
type: Schema.ObjectId,
ref: 'Profession'
}],
assignedToGame: {
type: Schema.ObjectId,
ref: 'Game'
}
});
var TaskSchema = new Schema({
game: {
type: Schema.ObjectId,
ref: 'Game'
},
inCategories: [{
type: Schema.ObjectId,
ref: 'TaskCategory'
}]
});
现在我想获取所有任务,它们在inCategories 中有一些元素,与用户的职业任务类别数组相同。
我试过了,但它什么也没返回
Profession.find({ _id: req.user.profession }).exec(function(err, userCategories) {
if(err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
Task.find({ game: req.user.game, inCategories: userCategories.assignedTaskCategories}).exec(function(err, tasks) {
if(err) {
return res.status(400).sed({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(tasks);
}
});
}
});
谁能帮我解决这个问题? :) 如果我的方法不好,请告诉我如何解决它的正确方法:)
编辑
我们不能使用$setEquals,因为数组不一样,考虑下面的例子:
职业程序员能够解决以下任务类别: 编程、演示、洗碗
职业秘书能够解决以下任务类别: 演示、洗碗
然后我们将创建一个任务,分配到类别:洗碗,所以职业assignedCategories数组更大,不等于任务的inCategories数组。
【问题讨论】:
-
但是在您最初的问题中,您提到 现在我想获取所有具有相同 inCategories 的任务??这如何不转化为相同的数组?您能否更具体地说明您要在这里实现的目标?
-
对不起,我的错误..我的英语不是很好......但我想我有一个解决方案:
Task.find({ game: req.user.game, inCategories: { $in: profession[0].assignedTaskCategories }})
标签: javascript mongodb express mongoose