如何在Sequelize中自我加入?

时间:2019-04-17 12:50:34

标签: javascript sql node.js sequelize.js

我有一个参与模型,其中有两个属性:cid代表对话ID,uid代表用户ID。

我有这个查询:

SELECT tA.cid
FROM participation tA, participation tB
WHERE tA.uid = "aaa" AND tB.uid = "aab" AND tA.cid = tB.cid;

它将返回两个用户都参与的对话的ID-仅该对话包括两个用户。

编辑:会话模型和用户模型通过参与模型具有多对多关联。

那么我该如何在Sequelize中进行查询?我可以使用include吗?

participation.findAll({
  include: [{
    model: participation
  }]

  //Other options...
})

1 个答案:

答案 0 :(得分:1)

如果您通过一个独立的模型(包含“有很多”或“属于许多”)定义了ID,则将使用include。然后,您可以尝试以下操作:

conversation.findAll({
      where: {
      [Op.and]: [{uid: "aaa"}, {uid: "aab"}]
      include: [{
        model: user,
        through: {
          attributes: ["uid", "cid"]
        }
      }]
    })


Otherwise you could try something like this:

participation.findAll({
  where: {
    [Op.and]: [{uid: "aaa"}, {uid: "aab"}]
  }
});