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

1.2K
Vistas
NestJS, cómo y dónde crear DTO de respuesta

He estado usando el framework Java Spring para desarrollar Microservicios. Recientemente comencé a explorar NestJS y tengo una pregunta sobre la creación de DTO de respuesta.

En Spring, los controladores son livianos, entregan la llamada a Service Layer.

La capa de servicio implementa la lógica de negocios y, finalmente, llama a las clases Mapper que son responsables de construir los DTO de respuesta. La clase de mapeador puede ser tan simple como clonar la entidad en un DTO o también puede crear objetos complejos utilizando varios objetos de entidad de base de datos.

En NestJS, en la mayoría de los ejemplos se utiliza class-transformer . Pero no estoy seguro de que el class-transformer sea lo suficientemente bueno para construir objetos complejos. Para mí class-transformer es básicamente clonar el objeto. El equivalente de que en Spring es

 BeanUtils.copyProperties(workingWellCompositeMemberContactTrace, workingWellDailyMemberAggEntity);

Entonces mi pregunta es en NestJS, ¿qué capa es responsable de construir objetos de respuesta complejos? ¿Y es una buena práctica enviar el objeto Entity al Controller?

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

0

Alguien en otra respuesta dibuje esta imagen que explica el ciclo de vida de una solicitud dentro de NestJS (gritar a esa persona):

ingrese la descripción de la imagen aquí

Para responder a su pregunta: what layer is responsible for building complex response objects? bueno, digo que los interceptores son el último bit de lógica que maneja las solicitudes, pero supongo que lo que está preguntando es "¿dónde se convierten las entidades automáticamente en DTO?" lo que explicaría su segunda pregunta: Is sending Entity object to Controller a good practice?

Respuesta corta: depende. Respuesta larga: los DTO son realmente útiles para desvincular la lógica de su solicitud con la lógica de su servicio, hay algunos valores que quizás no desee que el usuario sepa nunca y simplemente llénelos dentro de su lógica ... Y por lo tanto, es una buena práctica usar a ellos. Pero realmente, piense en su proyecto, el tamaño del mismo y lo que está tratando de lograr, especialmente ahora que tiene que manejar esa conversión.

Dicho esto, sobre la conversión entre Entidades y DTO. Una cosa que podría hacer es un conjunto manual total entre parámetros:

 export class UserDTO { id: string; name: string; surname: string; toEntity(dto:UserDTO) { const model = new User(); model.id = id; model.fullname = `${dto.name}, ${dto.surname}` return model; } fromEntity(entity:User) { const dto = new UserDTO(); dto.id = entity.id; const [ name, surname ] = entity.(fullname as string).split(', ').map((name) => {name.tirm()}); dto.name = name, dto.surname = surname; } }

Por otro lado, class-transformer y su uso de instanceToPlain y plainToClass pueden lograr muchos. Con el uso de decoradores como Expose y Exclude , puede manejar la mayoría de los casos de uso.

Y si eso no es suficiente, puede usar algo como: https://www.npmjs.com/package/@automapper/nestjs

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