问题描述
我有几个表,User ---> UserRoles
SELECT u.user_id,u.first_name,r.description ...
FROM users AS u
INNER JOIN user_roles AS ur ON ur.user_id = u.user_id
LEFT JOIN roles AS r ON ur.role_id = r.role_id;
目前,我可以通过以下方式用pyramida2实现它:
const main = async () => {
const users = await prisma.users.findMany();
for (let index = 0; index < users.length; index++) {
const user = users[index];
const roles = await prisma.user_roles.findMany({
where: {
user_id: user.user_id,},select: {
roles: true,});
user.roles = [];
roles.forEach((obj) => {
user.roles.push(obj.roles);
});
}
return users;
};
但是正如您看到的那样,以这种方式重新查询每个用户的角色会很疯狂,如何在一次查询数据库中做到这一点呢?
prisma2的期望结果与上面的当前prisma2查询返回的结果相同:
"users": [
{
"user_id": "71096566-ef63-4865-96c3-136910420492","first_name": "Jack","roles": [
{
"description": "manager"
},{
"description": "admin"
}
]
},{
"user_id": "c588da66-0e3a-42d5-abc9-9ea04c4687ef","first_name": "Jill","roles": [
{
"description": "superboss"
}
]
}
]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)