¿Alguien sabe si Prisma tiene una forma de evitar niveles de anidamiento innecesarios al obtener objetos anidados a través de la tabla de enlaces?
Esquema:
model User { id String @id @default(cuid()) name String? email String? @unique emailVerified DateTime? image String? accounts Account[] sessions Session[] roles UsersRoles[] created_at DateTime @default(now()) } model Role { id Int @id @default(autoincrement()) name AllowedRoles @default(USER) users UsersRoles[] } model UsersRoles { userId String user User @relation(fields: [userId], references: [id]) roleId Int role Role @relation(fields: [roleId], references: [id]) @@id([userId, roleId]) }En la captura de pantalla se ve que debo hacer
include: { roles: { include: { role: true } } }para obtener la identificación y el nombre del rol, pero también obtengo los datos innecesarios de la tabla de enlaces/tabla dinámica. ¿Puedo consultar los datos del rol directamente, sin obtener la tabla dinámica en el resultado? Funciona con relaciones Prisma implícitas de muchos a muchos, pero quiero hacerlo con relaciones explícitas
Edición 1: Encontré esto https://www.prisma.io/docs/guides/database/troubleshooting-orm/help-articles/working-with-many-to-many-relations Prisma muestra un ejemplo de cómo deshacerse del enlace datos de la tabla:
const result = posts.map((post) => { return { ...post, tags: post.tags.map((tag) => tag.tag) } })Supongo que dado que incluso en los documentos de Prisma lo hacen así, no hay forma de hacerlo durante el tiempo de recuperación con el cliente de Prisma. Pero podría estar equivocado.
Intente cambiar su include de nivel superior por una select . Prisma devolverá todos los campos escalares (sin relación) de forma predeterminada, a menos que especifique un objeto de select .