要获得与用户相关联的所有角色,即使其中一个与查询匹配,也需要定义另一个关联,以便可以在sequelize语句中两次包含角色表。
User.hasMany(models.UserRole, { foreignKey: 'user_id', as: 'roles2' });
后记语句-
const userInfo = await User.findAndCountAll({
include: [
{
model: UserRole,
attributes: ['id', 'role'],
as: 'roles',
where: { [Op.or]: [{ role: { [Op.like]: '%MANAGER%' } },
required: true
},
{
model: UserRole,
attributes: ['id', 'role'],
as: 'roles2',
required: true
}
],
where: whereStatement,
});
借助第一个包含(联接)功能,您可以根据用户角色过滤用户记录,而借助第二个包含(联接)功能,您可以获取角色之一匹配的用户的所有角色。