【发布时间】:2016-11-03 19:26:24
【问题描述】:
我试图找到所有正在做某个主题的用户。这是关系:
User.js
attributes: {
subjects: { collection: 'subject', via: 'users', dominant: true }, // Many to Many
levels: { collection: 'level', via: 'users', dominant: true } // Many to Many
}
Subject.js
attributes: {
users : { collection: 'user', via: 'subjects' } // Many to Many
}
Level.js
attributes: {
users : { collection: 'user', via: 'levels' } // Many to Many
}
我希望能够对用户进行查找,并且只返回与特定主题有关系的用户。像这样的:
User.find({ subjects: { 'contains': 1 } })
.exec(function(err, results){
if(err) return res.serverError(err);
users = results;
return res.json(users);
});
我知道我可以这样做:
Subject.findOne({id:1})
.populate('users')
.exec(function(err, results){
if(err) return res.serverError(err);
users = results.users;
return res.json(users);
});
但是我不想这样做,因为我可能想要过滤的不仅仅是主题。例如,使用上面的方法,我可能想找到所有正在做主题 1 AND 的用户都在做第 2 级。
User.find({ subjects: { 'contains': 1 }, levels: { 'contains': 2 } })
.exec(function(err, results){
if(err) return res.serverError(err);
users = results;
return res.json(users);
});
我正在使用sails v0.12.3
【问题讨论】:
标签: javascript node.js orm sails.js waterline