用户表:
角色表
用户角色关系表(多对多关系)
现在提供一个接口是查询用户列表,这个查询可以通过传递的角色id去过滤出有该角色的用户,类似文档系统 通过标签过滤出有该标签的文章并返回该文章所有标签。
/* 获取用户列表 */
async getUserList(query) {
const roleIds = query.roleIds || []
const name = query.name || ''
const frozen = query.frozen || -1
let offset = ((query.currentPage - 1) * query.pageSize) || 0
let limit = Number(query.pageSize) || 20
console.log(query)
console.log(offset, limit)
try {
const data = await this.Model.findAndCountAll({
raw: false,
where: {
[Op.and]: {
name: {
[Op.like]: `%${name}%`
},
frozen: {
[Op.not]: frozen
}
}
},
include: {
model: RoleModel,
as: 'roles',
attributes: [['id', 'roleId'], 'roleName'],
through: { attributes: [] },
where: {
id: {
[Op.or]: roleIds,//过滤出有该角色的用户
}
},
},
distinct: true,
subQuery: false,
offset,
limit,
});
return {
count: data.count,
userList: data.rows
}
} catch (error) {
throw error
}
}
当我传递两个角色id时数据正确的返回
但是当我只传递一个角色id时,返回的这条信息没有返回该用户的所有角色,有没有什么办法做这个查询!