我的Prisma模式是这样的:
model Permission {
id String @id @default(cuid())
name String
roles RolePermissions[]
}
model Role {
id String @id @default(cuid())
name String
permissions RolePermissions[]
users UserRoles[]
}
model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
image String?
roles UserRoles[]
}
model UserRoles {
user User @relation(fields: [userId], references: [id])
userId String
role Role @relation(fields: [roleId], references: [id])
roleId String
assignedAt DateTime @default(now())
assignedBy String?
@@id([userId, roleId])
}
model RolePermissions {
role Role @relation(fields: [roleId], references: [id])
roleId String
permission Permission @relation(fields: [permissionId], references: [id])
permissionId String
assignedAt DateTime @default(now())
assignedBy String?
@@id([roleId, permissionId])
}
因此,每个用户可以有多个角色,每个角色可以有多个权限,正如您所理解的,这意味着每个用户都有多个权限.
My goal是根据用户分配给哪些角色来 Select 用户的权限.
问题是,我不知道该怎么做:
我知道,我可以通过以下方式 Select 用户角色
const res = await prisma.user.findFirst(
{
include: {
roles: true
}
}
)
因此,它将为我提供用户角色,但我需要获得每个用户角色的权限.
我想我可以这样做
const res = await prisma.user.findFirst(
{
include: {
roles: {
include: {
permissions: true
}
}
}
}
)
但这给了我一个错误:
那么,我如何从用户的角色中获取用户的权限呢?