Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.3K
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!