Actualización de Migraciones en TimeWareM 0.3
Clase 34 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 adaptar las migraciones a la nueva versión de TimeWareM?
En el mundo del desarrollo de software, las actualizaciones de versiones pueden traer cambios radicales que nos obligan a ajustar nuestro código. Este es el caso de la actualización a TimeWareM 0.3, donde se introduce un cambio crucial en el sistema de migraciones. Las migraciones en bases de datos relacionales son la base para mantener una estructura de datos ordenada y eficiente. Con TimeWareM 0.3, nos enfrentamos al desafío de actualizar nuestros scripts de migración para adecuarlos a esta nueva versión.
¿Cuál es el cambio principal en el sistema de migraciones?
Recientemente, TimeWareM ha introducido un requisito esencial: el uso de una fuente de datos específica para las migraciones. Anteriormente, utilizábamos el comando npm run migrations junto a migrations.run para ejecutarlas. Sin embargo, ahora es necesario proporcionar un "data source", lo cual implica una reorganización en cómo configuramos nuestras migraciones.
Tome en cuenta estos puntos clave al ajustar sus scripts:
- Reemplazo de variables de entorno: Las variables de entorno ya no son leídas. Si anteriormente se utilizaban estos para las conexiones, o el archivo
ORMConfig.json, deben ser reemplazados por un "data source" explícito. - Nueva configuración de migraciones: Debe crearse un archivo
data source, proporcionando todas las opciones de conexión de manera similar a las configuraciones vivas de la aplicación. A continuación se muestra cómo definir este "data source":
import { DataSource } from 'timewarem';
export const appDataSource = new DataSource({
type: 'postgres',
url: process.env.DATABASE_URL,
synchronize: false,
logging: false,
entities: ['path/to/entities/*.{js,ts}'],
migrations: ['path/to/migrations/*.{js,ts}'],
});
¿Qué ajustes se necesitan en package.json?
Con esta nueva arquitectura, ciertos scripts en package.json requerirán actualizaciones. Previamente, el sistema leía configuraciones desde ORMConfig.json o directamente de las variables de entorno. Ahora, sigue estos pasos para adecuar tu archivo package.json:
- Actualizar los comandos de migración: Cambie la forma en que ejecuta comandos de migración, ahora es necesario especificar
ts-nodeyesm. Use el flag-dpara especificar el "data source".
{
"scripts": {
"migrations:run": "timewarem ts-node -d path/to/dataSource.ts migration:run",
"migrations:generate": "timewarem ts-node -d path/to/dataSource.ts migration:generate -o path/to/newMigration"
}
}
- Manejo de rutas: Asegúrese de indicar la ruta exacta donde desea que se almacenen las migraciones generadas.
¿Cómo asegurar la seguridad con variables de entorno?
Al hacer despliegues en servicios como AWS o Heroku, omitir datos sensibles en el código es crucial. Utilice variables de entorno para garantizar la seguridad:
-
Instalación y configuración de dotenv: Utilice
dotenvpara manejar estas variables de entorno. Instaledotenvsi no lo ha hecho:npm install dotenv -
Carga y utilización en
data source:
import * as dotenv from 'dotenv';
dotenv.config();
export const appDataSource = new DataSource({
url: process.env.DATABASE_URL,
...
});
Con estos pasos, hemos logrado ajustar nuestro sistema de migraciones en TimeWareM para que se ejecute fluidamente. Siempre recuerda que las migraciones son críticas para mantener la integridad de tu base de datos y deben realizarse con cuidado para evitar problemas en producción. ¡Sigue explorando y aprendiendo para mantenerte al día con las mejores prácticas de desarrollo!