es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo excluir entidades requeridas de una respuesta en TypeORM con NestJS

Tengo una entidad

@Column()
name: string;

@IsEmail()
email: string;

@Column({ select: false })
autogeneratedCode: string;

En mi respuesta de solicitud GET, solo obtengo el nombre y string, lo cual es esperado.

Pero cuando hago una solicitud POST con el cuerpo, también se devuelve el nombre, correo electrónico y autogeneratedCode.

Necesito ocultar autogeneratedCode en todas las respuestas CRUD.

¿Hay alguna manera de hacer esto? ¿O me estoy perdiendo algo aquí?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de ocultar la propiedad autogeneratedCode en todas las respuestas CRUD. La opción select en el decorador @Column se utiliza para especificar si una propiedad debe incluirse o no en las consultas. En este caso, establecer select en false significa que la propiedad debe excluirse de las consultas de forma predeterminada. Sin embargo, al crear una nueva entidad utilizando la API POST, la propiedad autogeneratedCode se incluirá en la respuesta porque está siendo establecida por el servidor y no por el cliente.

    Para ocultar completamente la propiedad autogeneratedCode, puedes modificar la definición de tu entidad para excluirlo de todas las respuestas:

    import { Exclude } from 'class-transformer';
    import { Column, Entity } from 'typeorm';
    
    @Entity()
    export class User {
      @Column()
      name: string;
    
      @IsEmail()
      @Column()
      email: string;
    
      @Exclude()
      @Column()
      autogeneratedCode: string;
    }
    

    Aquí, utilizamos el decorador Exclude de la biblioteca class-transformer para excluir la propiedad autogeneratedCode de todas las operaciones de serialización. Esto significa que no se incluirá en ninguna respuesta GET, POST, PUT o DELETE.

    Cabe destacar que esta solución depende de que la biblioteca class-transformer esté instalada y configurada correctamente. Es posible que también necesites ajustar el formato de respuesta de tu API para utilizar la serialización en lugar del mapeo directo a JSON si se está utilizando esta biblioteca.

Comments are closed.