我正在创建一个系统,在这个系统中,每个用户都有一些角色。之后,每个角色都包含一个权限列表,用于驱动应用程序中的逻辑。
Prisma模式(prisma版本4.1.1)
为此,我创建了这个Prisma模式:
model Role {
id String @id @default(cuid())
name String @db.VarChar(255)
permissions PermissionOnRoles[]
users User[]
}
model Permission {
id String @id
name String @db.VarChar(255)
description String @db.VarChar(255)
roles PermissionOnRoles[]
}
model PermissionOnRoles {
role Role @relation(fields: [roleId], references: [id]) @ignore
roleId String
permission Permission @relation(fields: [permissionId], references: [id])
permissionId String
assignedAt DateTime @default(now()) @ignore
assignedBy String @ignore
@@id([roleId, permissionId])
}DB现在的样子:
迁移这个模式之后,我向数据库和实际表添加了一些DEV数据,如下所示:

PermissionOnRoles

权限

但是,当我尝试使用以下查询查询包含权限的角色时:
await prisma.role.findMany({
include: {
permissions: true,
},
});错误:
Invalid `prisma.role.findMany()` invocation:
{
include: {
permissions: true,
~~~~~~~~~~~
? users?: true,
? _count?: true
}
}
Unknown field `permissions` for include statement on model Role. Available options are listed in green. Did you mean `users`?如果我试图打开Prisma中的角色表,基本上也会出现同样的错误。
我不擅长数据库的设计,所以我的数据库设计可能是错误的,或者我只是错过了一些非常愚蠢的东西,但是我找不到任何东西,所以我想得到任何能引导我找到正确方向的建议。
我试过什么
删除节点modules
发布于 2022-08-25 12:10:01
在本例中,您需要从连接表(在本例中为permissionOnRoles )进行查询。所以这个查询应该适用于您。
await prisma.permissionOnRoles.findMany({
include: {
permission: {
include: {
roles: true,
},
},
},
});https://stackoverflow.com/questions/73291006
复制相似问题