我试图让m:n关联中的所有用户都不是特定群组的成员。
经过几个小时的尝试并寻找相关的东西,这就是我想出来的。但它并没有100%解决我的问题
router.get('/:group_id/notmembers', function(req, res) {
models.User.findAll({
include: [
{ model: models.Group,
through: {
model: models.User_Group,
where: {
GroupId: {[Op.notIn] : [req.params.group_id] },
},
},
required: true,
}
],
}).then(function(groups) {
res.send(groups);
});
});
到目前为止我编写的代码返回属于另一个组而不是特定group_id的所有用户,这将在用户只能是一个组的成员的情况下工作。在我的场景中,用户可以是多个组的成员,因此这对我不起作用。
任何帮助表示赞赏!
修改
没有人知道?
答案 0 :(得分:0)
在流血和流泪之后,我终于明白了。
通过将required变量设置为false,我可以包含特定group_id的所有db条目,即使用户没有它也是如此。从那里我只选择没有Group.id的所有条目,只留下不属于该特定组的用户。
router.get('/:group_id/notmembers', function(req, res) {
models.User.findAll({
include: [
{ model: models.Group,
through: {
model: models.User_Group,
where: {
GroupId: req.params.group_id,
},
},
required: false,
}
],
where: {
'$Groups.id$' : null,
}
}).then(function(groups) {
res.send(groups);
});
});