Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

429
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda