Configuración y uso de migraciones con TimeORM y TypeScript
Clase 15 de 36 • Curso de NestJS: Persistencia de Datos con TypeORM
Contenido del curso
- 3
Instalación de Docker en Windows, macOS y Ubuntu
01:35 - 4

Configuración de Postgres en Docker Compose
09:18 - 5

Conexión a Postgres en Docker: Terminal y PgAdmin
15:16 - 6

Conexión de NestJS a Postgres con Node Postgres
07:28 - 7

Inyección de Dependencias en NETJS: Conexión a PostgreSQL
10:49 - 8

Conexión a Bases de Datos con Variables de Entorno en Node.js
13:49
- 9

Implementación de TypeORM con NestJS en Proyectos Node.js
09:14 - 10

Creación de Entidades en ORM para Tiendas Virtuales
07:46 - 11

Implementación del Patrón Repository en NestJS con TypeORM
13:31 - 12

Operaciones CRUD en ProductService usando TypeORM y Postgres
13:35 - 13

Cambio de Postgres a MySQL en Docker para CRUD de Productos
17:28
- 18

Relaciones 1 a 1 en Bases de Datos con TimeORM
18:58 - 19

Manipulación de Relaciones Uno a Uno en Controladores y Servicios
10:28 - 20

Relaciones Uno a Muchos en Bases de Datos con TypeORM
10:36 - 21

Gestión de Relaciones Uno a Muchos en Controladores de API
10:27 - 22

Relaciones Muchos a Muchos en Time1M: Creación y Manejo Práctico
08:38 - 23

Manipulación de Relaciones Muchos a Muchos en Controladores
15:08 - 24

Manipulación de Relaciones Muchos a Muchos con TimeORM en JavaScript
19:09 - 25

Relaciones Muchos a Muchos con Campos Agregados en TimeWareM
16:41 - 26

CRUD de órdenes de compra y gestión de ítems en NestJS
30:07
- 27

Paginación de Productos con Limit y Offset en Controladores API
10:37 - 28

Filtrado de Precios con Rango Usando Between en Time Wareham
10:17 - 29

Indexación de Parámetros en Bases de Datos: Uso y Precauciones
02:56 - 30

Buenas prácticas de nombramiento en JavaScript y bases de datos
17:52 - 31

Serialización y Transformación de Datos en APIs con ClassTransformer
16:55
¿Cómo integrar TimeORM para gestionar migraciones?
Integrar un sistema de migraciones en tu proyecto es crucial para la gestión eficiente y ordenada de los cambios en tu base de datos. TimeORM, con su CLI, te facilita este proceso de manera automatizada, similar a cómo lo hace NEST para APIs. Aprenderás a configurar y correr migraciones utilizando TimeORM, optimizando así la adaptación de tu base de datos a cambios en tu aplicación. ¡Vamos al código!
¿Cómo configuramos las migraciones?
Para configurar migraciones con TimeORM, es fundamental entender que requiere una conexión y configuración propias, diferentes a las de tu aplicación NEST. Puedes optar por usar un archivo ormconfig.json o, preferiblemente, integrar variables de ambiente que añadan flexibilidad.
-
Crea el archivo de configuración: Define conexiones, host, usuario, password, tipo de base de datos y puerto. Un ejemplo para una base de datos PostgreSQL:
{ "type": "postgres", "host": "localhost", "port": 5432, "username": "root", "password": "123456", "database": "mydb", "entities": ["dist/**/*.entity{.ts,.js}"], "migrations": ["dist/migration/*.js"], "cli": { "migrationsDir": "src/migration" } } -
Usa variables de entorno: Configura host, usuario, y tablas de migración en un archivo
.env. Ejemplo:TYPEORM_CONNECTION=postgres TYPEORM_HOST=localhost TYPEORM_USERNAME=root TYPEORM_PASSWORD=123456 TYPEORM_DATABASE=mydb TYPEORM_MIGRATIONS_DIR=src/migration -
Entidades y migraciones en TypeScript: Cambia a TypeScript ajustando los paths para buscar archivos
.ts. Utiliza expresiones regulares comodist/**/*.entity{.ts,.js}para que reconozca las entidades.
¿Cómo ajustar el package.json para TimeORM?
Modifica el package.json para incluir scripts que manejen el CLI de TimeORM, facilitando la ejecución de comandos desde tu proyecto.
-
Actualiza los scripts:
-
Añade un script para ejecutar el CLI de TimeORM utilizando
ts-node."scripts": { "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js", "migration:generate": "npm run typeorm migration:generate -- -n" }
-
-
Ejecuta migraciones:
-
En consola, usa el script para generar una nueva migración nombrada:
npm run migration:generate -- -n InitialMigration
-
¿Qué problemas comunes podemos encontrar y cómo solucionarlos?
Al integrar sistemas complejos como TimeORM, es común enfrentar errores. Aquí te comparto algunos y cómo resolverlos:
-
Errores de conexión: Verifica que las variables de entorno estén correctamente configuradas sin typos y que el servicio de tu base de datos esté activo.
-
Problemas con TypeScript: Asegúrate de que el CLI de TimeORM reconoce las configuraciones tipeadas. Ajusta el uso de
ts-nodepara que interprete correctamente decoradores y estructuras modulares."scripts": { "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js" } -
Migraciones no generadas: Si encuentras que no hay cambios detectados, verifica si las tablas fueron creadas manualmente. Si es así, elimínalas y vuelve a generar las migraciones para que el CLI las reconozca.
¿Cómo asegurarnos de que las migraciones corren correctamente?
Finalmente, ejecutar eficazmente las migraciones es vital. Un error común es que no se detecten cambios si las tablas ya existen. Siempre:
- Elimina tablas creadas previamente desde la consola de administración antes de generar nuevas migraciones.
- Revisa los logs tras ejecutar migraciones para confirmar que no hay errores silenciosos.
Implementa las mejores prácticas, como evitar el uso del modo síncrono en producción, y confía en las migraciones para manejar los datos historiales correctamente. Sigue explorando y configurando, y estarás un paso más cerca de una base de datos robusta y bien gestionada. ¡Ánimo, sigue adelante y mejora cada día!