Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

433
Vistas
Prisma: cómo excluir propiedades de los tipos generados

EDITAR hay un peligro oculto al ocultar campos en las definiciones de TS: los campos no serán accesibles durante el desarrollo con intellisense, pero el objeto completo con campos "ocultos" puede enviarse accidentalmente en una respuesta, lo que podría exponer datos confidenciales.

Estoy creando mi aplicación usando Prisma para conectarme a la base de datos (aplicación Next.js). Tengo algunos problemas con las definiciones de mecanografiado generadas automáticamente.

Estoy siguiendo los documentos pero no sé cómo seleccionar un subconjunto de campos de Post . En su ejemplo:

 import { Prisma } from '@prisma/client' const userWithPosts = Prisma.validator<Prisma.UserArgs>()({ include: { posts: true }, // -> how can I exclude some fields from the Post type? }) type UserWithPosts = Prisma.UserGetPayload<typeof userWithPosts>

Imagine que Post es el siguiente (simplificado):

 model Post { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) title String published Boolean @default(false) author User @relation(fields: [authorId], references: [id]) authorId Int }

Me gustaría excluir algunos de los campos generados automáticamente del tipo de createdAt Post Básicamente, el tipo user.posts[0] tendrá todos los campos excepto createdAt .

Una solución podría ser:

 const postData = Prisma.validator<Prisma.PostArgs>()({ select: { id: true, title: true, published: true, authorId: true } }) type UserWithPosts = Omit<Prisma.UserGetPayload<typeof userWithPosts>, 'posts'> & { posts: postData[] }

Pero esperaba algo un poco más limpio. ¿Alguna alternativa?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Encontré una solución: en lugar de usar include use select con una select anidada para posts . El problema es que se vuelve bastante detallado y engorroso de mantener (cada vez que se agrega un campo en el esquema, también se debe agregar aquí...)

 const userWithPosts = Prisma.validator<Prisma.UserArgs>()({ select: { email: true, name: true, posts: { select: { id: true, title: true, published: true, authorId: true } } } })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda