Sequelize Where条件嵌套包含

Sequelize Where condition in nested include

如何使用包含在 Sequelize 中创建以下 sql 语句?

select
    *
from
    User_Role_Table as user_role
inner join User_Table as u on
    u.User_ID = user_role.User_ID
inner join Role_Table as r on
    r.User_Role_ID = user_role.User_Role_ID
where
    u.User_ID = u_id AND r.Role_Name = 'role_name'
    

我试过把where条件放在include里面,但是如果没有找到记录就会报错

UserRole.findOne({
        where: {
            userId,
        },
        include: [
            {
                model: User,
                as: "users",
                required: true,
            },
            {
                model: Role,
                as: "roles",
                require: true,
                where: {
                    roleName,
                },
            },
        ],
    })

是否可以将 include 内的 where 条件放入 outsite initial where 块中?我试过下面的方法,但它 return 错误: SequelizeDatabaseError: The multi-part identifier "UserRole.roleName" could not be bound.

UserRole.findOne({
        where: {
            userId,
            "$Role.roleName$": roleName,//roleName condition write here
        },
        include: [
            {
                model: User,
                as: "users",
                required: true,
            },
            {
                model: Role,
                as: "roles",
                require: true,
            },
        ],
    })

您可以在每个联接中包含 where

const userRole = await UserRole.findOne({
  include: [
    {
      model: User,
      where: {
        User_ID: userId,
      },
    },
    {
      model: Role,
      where: {
        Role_Name: roleName,
      },
    },
  ],
});