Migración y ajustes en TimewareM 0.3: Cambios en métodos y servicios
Clase 33 de 36 • Curso de NestJS: Persistencia de Datos con TypeORM
Resumen
¿Cómo migrar nuestra API en TimewareM 0.3?
Al actualizar nuestras dependencias, enfrentamos el desafío de adaptar nuestra API debido a cambios en la nueva versión de TimewareM. Aunque inicialmente pueda parecer abrumador, con un enfoque paso a paso, estos ajustes se vuelven manejables. Aquí te guiaremos a través de los cambios robustos en TimewareM versión 0.3, destacando los pasos esenciales para realizar una migración exitosa.
¿Qué cambios debemos hacer en los servicios?
Los servicios son la parte de nuestro código más afectada por los cambios. La estructura de las consultas, especialmente las relativas a métodos como find
, where
, y findConditions
, han evolucionado para mejorar la API y manejar mejor las bases de datos.
-
Cambios en
Find Conditions
: El tipoFindConditions
ya no existe y ha sido reemplazado porFindOptions.Where
, lo que implica cambios en la forma de estructurar nuestras consultas dinámicas.// Cambio de FindConditions a FindOptions.Where let options: FindOptions.Where<Entity> = { // ... };
-
Método
FindOne
: Anteriormente recibía un ID directamente como parámetro, pero ahora todo debe pasarse medianteoptions
.// Ejemplo de nuevo uso de FindOne const entity = await repository.findOne({ where: { id: entidadId } });
¿Cómo se ajustan los métodos FindByIds?
Anteriormente, el uso de FindByIds
estaba en desuso y se recomienda ahora usar el método FindBy
junto con el operador In
.
-
Ejemplo de ajuste con
FindBy
:// Nuevo método usando FindBy con operador In const entities = await repository.findBy({ where: { id: In(listaDeIds) } });
Este enfoque mejora la compatibilidad y uso uniforme de la API, aprovechando los operadores para optimizar las consultas.
¿Qué hacer con el módulo HTTP?
La versión 9 de NestJS cambia la ubicación del módulo HTTP, separándolo de los módulos comunes @nestjs/common
a un nuevo paquete llamado @nestjs/axios
.
-
Migración del módulo HTTP:
-
Instalar el nuevo paquete HTTP:
npm install @nestjs/axios axios
-
Ajustar las importaciones en el código para usar el nuevo módulo:
import { HttpService } from '@nestjs/axios';
-
Mejorar el manejo de promesas con
lastValueFrom
de RxJS:const tags = await lastValueFrom(httpService.get(...));
-
¿Cómo garantizar la validación de variables de entorno?
Verificar que las configuraciones están correctamente definidas es esencial para el correcto funcionamiento de nuestra API. Asegúrate de incluir todas las variables de entorno necesarias en el archivo de configuración:
-
Ejemplo de configuración:
API_KEY=miApiKey DATABASE_NAME=miBD DATABASE_PORT=5432
Implementa una buena práctica adicional con validaciones en tus variables de entorno, lo cual previene errores operativos y simplifica el depurado.
¿Qué otros cambios necesitamos tener en cuenta?
Actualizar nuestra API a la versión 0.3 de TimewareM no solo trae mejoras de rendimiento, sino también un refuerzo significativo en términos de seguridad y soporte para distintas bases de datos. Aunque los métodos create
, update
y delete
permanecen sin cambios significativos, el tratamiento de las consultas es el área donde debemos concentrar nuestros esfuerzos de migración.
Con esta guía, esperamos que puedas realizar los cambios necesarios de manera eficiente y que estas mejoras en TimewareM combinen robustez y eficiencia para tus servicios API. Recuerda mantener tus habilidades actualizadas y no dudes en revisar cambios futuros que puedan ofrecer herramientas aún más poderosas. ¡Sigue aprendiendo y dominando nuevas tecnologías!