Migraciones en bases de datos: agregar campos automáticamente
Clase 17 de 36 • Curso de NestJS: Persistencia de Datos con TypeORM
Resumen
¿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:
CreateData
para registrar cuándo se creó el registro.UpdateData
para registrar cuándo se actualizó el registro.
-
Utilizar decoradores específicos:
- Usar decoradores como
CreateDataColumn
yUpdateDataColumn
para 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
PgAdmin
nos 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
Insomnia
para 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
CreateData
yUpdateData
.
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!