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

968
Views
¿Cómo mapear con la ayuda de Automapper (TypeScript) las entradas de una matriz llena de diferentes DTO?

Estoy usando la biblioteca TypeScript "Automapper" en mi backend NestJS para convertir una respuesta de MongoDb/ Mongoose en un DTO. Así es como se ve la respuesta:

 { "_id": "mongo-object-id", "widgets": [ { "id": "UUID", "type": "IMAGE", "zIndex": "0", "position": { "x": 1, "y": 2 }, "pinned": false, "height":500, "width":1000 }, { "id": "UUID", "type": "CONVERSATION", "zIndex": "1", "position": { "x": 3, "y": 7 }, "pinned": false, "participants": ["UUID1","UUID2"] } ] }

Mi problema es que no sé cómo convertir las entradas de la matriz de "widgets" en diferentes DTO (ImageDTO, ConversationDTO) según el atributo/discriminador "tipo".

¿Cómo puedo solucionar eso?

Actualmente uso lo siguiente:

 mapper.createMap(MeetingSpace, MeetingSpaceDto).forMember( (destination) => destination.widgets, mapWith(WidgetDto, Widget, (source) => source.widgets) );

Pero tengo que encontrar una manera de asignar un "Widget" a un "ImageDto" o "ConversationDto" debido al "tipo".

 mapWith(ImageDto, Widget, (source) => source.widgets) mapWith(ConversationDto, Widget, (source) => source.widgets)
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Sé que esto es un poco tarde, pero me encontré con la misma necesidad.

Debe definir la asignación de Widget a ImageDTO

 createMap(mapper, Widget, ImageDTO);

Luego use la función de mapa en la colección:

 return source.widgets.map(widget => mapper.map(widget, Widget, ImageDTO);
over 4 years ago · Santiago Trujillo 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!