对连接表进行 Sequelize 查询

mik*_*key 5 node.js sequelize.js

我正在尝试使用 sequelize 查询连接表:这是模型:

db.client.belongsToMany(db.user, {
  through: db.clientUser,
   onDelete: 'cascade',
});
db.user.belongsToMany(db.client, {
   through: db.clientUser,
 });
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的:

db.user.findAll({
      where: {
        group_id: 1,
      },
      include: [{
        model: db.clientUser,
        where: {
          is_manager: 1,
        }
      }],
      raw: true,
    })
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误: client_user is not associated to user!

知道这个问题的原因是什么吗?

spa*_*guy 4

client您声明了fromuser 到 之间 的关系clientUserclient虽然迂腐,但它的抱怨在技术上是正确的:和之间没有明确声明的关系clientUser。也不应该有:你们的belongsToMany关系应该照顾好这一点。您可以调整您的查询以处理这种关系。

注意:我不知道在哪些表中找到 group_id 和 is_manager。它们可能需要进行洗牌。

db.user.findAll({
  where: {
    group_id: 1,
  },
  include: [{
    model: db.client,
    through: {
      where: {
        is_manager: 1, // Assuming clientUser.is_manager?
      },
    }],
  raw: true,
})
Run Code Online (Sandbox Code Playgroud)