Migración y ajustes en TimewareM 0.3: Cambios en métodos y servicios

Clase 33 de 36Curso 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 tipo FindConditions ya no existe y ha sido reemplazado por FindOptions.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 mediante options.

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

    1. Instalar el nuevo paquete HTTP:

      npm install @nestjs/axios axios
      
    2. Ajustar las importaciones en el código para usar el nuevo módulo:

      import { HttpService } from '@nestjs/axios';
      
    3. 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!