🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónObjetos de transferencia separados del modelo
5 tareas · 40 min · Principiante
Un objeto de transferencia describe lo que un caso de uso acepta, sin arrastrar todo lo que la base guarda. Bien usado, corta la asignación masiva de raíz; declarado y no aplicado, solo da tranquilidad. El servicio de contratos de Pulsoandino, escrito en TypeScript, pasó una revisión en junio «sin hallazgos». Te entregan sus tipos, sus tres rutas de escritura y el registro de cambios de dos semanas.
Objetivo de la sala
Un objeto de transferencia describe lo que un caso de uso acepta, sin arrastrar todo lo que la base guarda. Bien usado, corta la asignación masiva de raíz; declarado y no aplicado, solo da tranquilidad. El servicio de contratos de Pulsoandino, escrito en TypeScript, pasó una revisión en junio «sin hallazgos». Te entregan sus tipos, sus tres rutas de escritura y el registro de cambios de dos semanas.La entidad (o modelo) representa lo que se guarda: un contrato tiene socio, sede, plan, valor mensual, día de cobro, estado y fecha de fin de congelamiento. Un objeto de transferencia de datos (DTO, por sus siglas en inglés) representa lo que un caso de uso concreto acepta o devuelve: para que el socio cambie su día de cobro bastan dos campos. Separarlos tiene dos efectos: el cliente nunca enlaza contra la entidad, y cada rol tiene su propio objeto (el del socio no es el del gerente).
La guía de OWASP sobre asignación masiva pone esta separación como la primera opción, y aclara un límite: el DTO decide qué propiedades se pueden escribir, pero no reemplaza la comprobación de que esa persona puede tocar ese objeto.
Responde para continuar
¿Qué aporta un objeto de transferencia propio para la ruta en que el socio edita su contrato?
Ver pista de ayuda
Piensa en la diferencia entre lo que se guarda y lo que un caso de uso acepta.
Abre el laboratorio, entra en la carpeta pulsoandino-contratos y compara las tres rutas de contratos.rutas.ts. Dos crean un objeto nuevo con los campos validados y los copian uno a uno sobre el contrato. La primera declara su tipo de entrada en la firma y copia el cuerpo entero con Object.assign, que pasa al objeto destino todas las propiedades propias del origen.
Ahora busca en registro-contratos.txt qué hizo eso en la práctica.
Responde para continuar
¿Qué contrato quedó con un valor mensual que ningún gerente ajustó? Escribe su código.
Ver pista de ayuda
El único ajuste de valor legítimo llega por la ruta de la sede.
Lee nota-revision-anterior.txt. La conclusión confunde dos cosas que en TypeScript viven en momentos distintos: lo que el compilador comprueba al escribir el código y lo que el programa hace al recibir la petición.
Responde para continuar
¿Por qué el tipo ActualizarContratoDto no impidió que se guardara un campo de más?
Ver pista de ayuda
Pregúntate qué queda del tipo cuando el código ya se está ejecutando.
El valor mensual no es la única propiedad de la entidad que la ruta del socio deja escribir. Revisa en el registro qué otro cambio llegó por esa misma ruta y que en el negocio corresponde a una renovación.
Responde para continuar
¿Qué contrato terminado volvió a quedar activo desde la ruta del socio? Escribe su código.
Ver pista de ayuda
Busca un cambio de estado en una línea de PATCH sobre /contratos/mios.
Un informe útil no solo señala lo roto: también muestra lo que sí funciona, para que el equipo copie el patrón correcto. En el registro hay una petición a una ruta que copia campo a campo y que trajo un nombre de campo de más; el cambio aplicado muestra que ese campo se ignoró.
Responde para continuar
¿En qué contrato se ve que la ruta que copia campo a campo ignoró un campo que sobraba? Escribe su código.
Ver pista de ayuda
Compara los nombres recibidos con los cambios aplicados en la ruta de congelar.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.