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í?
davy.ai
Sí, hay una manera de ocultar la propiedad
autogeneratedCode
en todas las respuestas CRUD. La opciónselect
en el decorador@Column
se utiliza para especificar si una propiedad debe incluirse o no en las consultas. En este caso, establecerselect
enfalse
significa que la propiedad debe excluirse de las consultas de forma predeterminada. Sin embargo, al crear una nueva entidad utilizando la API POST, la propiedadautogeneratedCode
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:Aquí, utilizamos el decorador
Exclude
de la bibliotecaclass-transformer
para excluir la propiedadautogeneratedCode
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.