如果特定记录是其中之一,则查询“ belongsToMany”中的所有记录

时间:2018-07-20 15:03:35

标签: javascript node.js relational-database sequelize.js

我有一个User模型,一个Message模型和一个Group模型。 Message belongsTo GroupGroup belongsToMany User(group_members, { as: 'members' }) 我想查询所有消息,其中特定用户是其组的成员。我是在include上使用Message来实现的,就像这样:

include: [ {
  model: Group,
  include: {
    association: 'members',
    where: {
      id: userId
    }
  },
  required: true
} ]

但是,这将返回Message.Group.members作为我检查的用户 only 的数组。这当然是预料之中的,但是如果我希望所有成员(userId是其中之一)该怎么办?

编辑-This似乎是我想要的。

1 个答案:

答案 0 :(得分:1)

您的条件应该在包含之外。通过创建所需的内部联接,您可以像这样过滤结果:

models.Message.findAll({
    attributes: [ 'idcustomer', 'firstname', 'lastname' ],
    include: [ {
        model: Group,
        include: {
          association: 'members'  
        }
    } ]
    where: {
        'group.members.id': userId
    }
});

这应该有效。