Sequelize 关联查询时条件如何设置到where里,而不是管理on的后面?

Sequelize 关联查询时条件如何设置到where里,而不是on后面?

代码如下

    const rolePermission = await SysRolePermissionModel.findOne({
      where: { role_id, status: 1 },
      // attributes: ['id'],
      raw: true,
      include: [
        {
          attributes: [],  //下面的where 里出现的位置不对
          where: { status: 1, permission, method },  //这里的条件在on 后面接着的,而不是在 where 后面出现的?
          model: SysPermissionModel,
          required: false
        }
      ]
    })

以上代码出来的sql 如下:

SELECT
    `sys_role_permission`.`id`,
    `sys_role_permission`.`role_id`,
    `sys_role_permission`.`permission_id`,
    `sys_role_permission`.`status`, 
FROM
    `sys_role_permission` AS `sys_role_permission`
    LEFT OUTER JOIN `sys_permission` AS `sys_permission` 
    ON `sys_role_permission`.`permission_id` = `sys_permission`.`permission_id` 
    AND `sys_permission`.`status` = 1 
    AND `sys_permission`.`permission` = '/sys/user/create' 
    AND `sys_permission`.`method` = 'POST' 
// include 里面的 where 的条件出现了在这里,而我想要的结果应该是出现在下面where 里面
WHERE
    `sys_role_permission`.`role_id` = 7 
    AND `sys_role_permission`.`status` = 1 
    LIMIT 1;
想要的是这种写法
WHERE
    `sys_role_permission`.`role_id` = 7 
    AND `sys_role_permission`.`status` = 1 
    AND `sys_permission`.`status` = 1 
    AND `sys_permission`.`permission` = '/sys/user/create' 
    AND `sys_permission`.`method` = 'POST' 
    LIMIT 1;

不知道是哪里设置的不对?求大神?

阅读 2.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题