我在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
中的某些元素与User的职业taskCategories数组相同。
我试过了,但它没有返回任何内容
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
数组。< / p>