Migraciones en bases de datos: agregar campos automáticamente
Clase 17 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 agregar nuevos atributos o relaciones en base de datos mediante migraciones?
Cuando trabajamos con bases de datos, tarde o temprano surge la necesidad de realizar modificaciones. Ya sea que estemos añadiendo nuevos atributos o creando nuevas relaciones, implementar estos cambios de manera efectiva y segura es crucial. Evitar manipulaciones directamente sobre la estructura es una práctica segura y adecuada. Para lograrlo, utilizamos un sistema de migraciones que nos permite manejar, generar y aplicar los cambios sin afectar la integridad de los datos.
¿Por qué utilizar migraciones en el manejo de bases de datos?
Las migraciones ayudan a mantener un control de versión de las modificaciones en la base de datos. Esto asegura que cualquier cambio sea registrado y pueda ser replicado en otros entornos de manera eficaz.
Ventajas de las migraciones:
- Control de cambios: Cada modificación en la base de datos queda documentada.
- Deshacer cambios: Permite revertir cambios si fuese necesario.
- Consistencia entre entornos: Facilita la replicación de cambios en diferentes entornos de desarrollo y producción.
- Minimización de errores: Reduce el riesgo de errores humanos al no realizar cambios manuales en la estructura de la base de datos.
¿Cómo agregar atributos de fecha automáticamente?
Añadir atributos que registren las fechas de creación y actualización de un registro es una buena práctica en gestión de base de datos. Estos campos son especialmente útiles para realizar auditorías y seguimiento del ciclo de vida de los datos.
Pasos para adicionar los atributos:
-
Crear atributos en la entidad:
CreateDatapara registrar cuándo se creó el registro.UpdateDatapara registrar cuándo se actualizó el registro.
-
Utilizar decoradores específicos:
- Usar decoradores como
CreateDataColumnyUpdateDataColumnpara manejar automáticamente los valores de estos campos aprovechando las capacidades de gestión de fechas y zonas horarias.
- Usar decoradores como
-
Configurar el tipo de datos:
- Definir los campos como
timestamp with time zone (TZ)para asegurar consistencia sin importar la zona horaria del entorno.
- Definir los campos como
@CreateDataColumn({ type: 'timestamp with time zone', default: () => 'CURRENT_TIMESTAMP' })
createdAt: Date;
@UpdateDataColumn({ type: 'timestamp with time zone', default: () => 'CURRENT_TIMESTAMP', onUpdate: 'CURRENT_TIMESTAMP' })
updatedAt: Date;
¿Cómo generar y aplicar una migración?
Para llevar los cambios a la base de datos, debemos seguir estos pasos:
-
Generar la migración:
- Desde la terminal, ejecutamos un comando para generar una nueva migración que añada los campos.
- Ejemplo de comando en
TypeORM:typeorm migration:generate -n AddFields
-
Aplicar la migración:
- Corremos la migración generada para que los cambios reflejen en la base de datos:
typeorm migration:run
- Corremos la migración generada para que los cambios reflejen en la base de datos:
-
Verificar los cambios:
- Comprobamos que los campos están correctamente añadidos.
- Herramientas como
PgAdminnos ayudan a visualizar la estructura de la base de datos y confirmar los nuevos campos.
¿Cómo verificar el impacto de los nuevos atributos?
Una vez ejecutada la migración, es importante validar el comportamiento de los nuevos atributos en el sistema:
- Crear y consultar registros: Usa herramientas como
Insomniapara insertar o consultar datos y observar cómo los atributos de fecha se llenan automáticamente. - Validar con ejemplos prácticos: Realizar operaciones CRUD y verificar el correcto funcionamiento de los campos
CreateDatayUpdateData.
Este enfoque no solo incrementa la fiabilidad de la base de datos, sino que también abre las puertas hacia una administración más eficiente y segura de los datos. ¡Continúa explorando y practicando para dominar estas técnicas y llevar tus habilidades al siguiente nivel!