获取不在组

时间:2018-03-14 13:10:48

标签: javascript node.js express sequelize.js

我试图让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的所有用户,这将在用户只能是一个组的成员的情况下工作。在我的场景中,用户可以是多个组的成员,因此这对我不起作用。

任何帮助表示赞赏!

修改

没有人知道?

1 个答案:

答案 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);
  });
});