在sequalize PostgreSQL中嵌套内部联接

时间:2019-03-07 04:52:16

标签: postgresql include sequelize.js where-clause

除了角色名称是管理员和客户外,我想显示所有用户。

  

用户表具有:ID,名称,电子邮件和密码

     

角色表具有:id,role_name

     

角色映射具有:id,user_id和role_id

这是我的查询

models.User.findAll({
      include: [{
            model: models.RoleMapping,
            as: 'user_role',
            attributes: ['user_id', 'role_id'],
            include: [{
                model: models.Role,
                as: 'Role',
                attributes: ['id', 'role_name', ],
            }]
        }],
        where :{
            '$Role.role_name$': {
                $notIn: ['Trader','Customer','admin']
            }

        }  
    })

得到此错误错误:缺少表“角色”的FROM子句条目

1 个答案:

答案 0 :(得分:0)

可以尝试吗?并且让我知道,我将尝试更新答案。我没有测试

models.User.findAll({
  include: [{
        model: models.RoleMapping,
        as: 'user_role',
        attributes: ['user_id', 'role_id'],
        include: [{
            model: models.Role,
            as: 'Role',
            attributes: ['id', 'role_name', ],
            where :{
              role_name: {
                  $notIn: ['Trader','Customer','admin']
              }
          }
        }]
    }],  
})