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

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

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 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