- 1

Instalación y configuración inicial de NestJS para APIs
06:28 - 2

Instalación del CLI de NestJS y primer proyecto con API
11:29 - 3

Creación de endpoints dinámicos para consultar usuarios en NestJS
20:23 - 4

Operaciones CRUD en APIs REST con Postman
23:37 - 5

Método PUT para actualizar usuarios con ID automático
19:42 - 6

Códigos de estado HTTP y manejo de errores en APIs con NestJS
16:07 - 7

DTOs y validación automática de datos en APIs con NestJS
19:31 - 8

Patrón de servicios e inyección de dependencias en NestJS
25:09 - 9

Configuración de variables de entorno en NestJS
20:44 - 10

Creación y organización de módulos en NestJS para aplicaciones escalables
12:26 quiz de Fundamentos y Primer CRUD
Migraciones de base de datos sin pérdida de información
Clase 23 de 35 • Curso de Backend con NestJS
Contenido del curso
- 11

Configuración de PostgreSQL con Docker y Docker Compose
16:08 - 12

Configuración de PostgreSQL con TypeORM en aplicaciones NestJS
12:17 - 13

Creación de entidades ORM con decoradores en TypeScript
09:17 - 14

Implementación del Repository Pattern con TypeORM en NestJS
29:55 - 15

Relaciones uno a uno entre usuarios y perfiles en PostgreSQL
17:00 - 16

Actualización de DTOs con mapped types en NestJS para perfil y usuario
38:56 - 17

Generación automática de módulos CRUD con NestJS y AI
25:34 - 18

Relaciones uno a muchos con TypeORM en NestJS
17:56 - 19

Creación de entidad Category con relaciones many-to-many en NestJS
15:28 - 20

Relaciones many-to-many con TypeORM y validación de arrays
17:40 - 21

Reutilización de servicios entre módulos en NestJS
09:04 - 22

Configuración de migraciones de base de datos con TypeORM
23:01 - 23

Migraciones de base de datos sin pérdida de información
20:46 quiz de Base de Datos y Persistencia con TypeORM
- 24

Cómo proteger contraseñas con hashing usando Bcrypt en NestJS
10:15 - 25

Serialización de datos para excluir campos sensibles en APIs
04:13 - 26

Configuración de autenticación con Passport en NestJS
19:16 - 27

Implementación de endpoint de login con Node.js y NestJS
09:09 - 28

Implementación de JSON Web Token para autenticación en NestJS
16:15 - 29

Protección de endpoints con JWT guards en NestJS
11:34 - 30

Automatización de user ID en APIs con JWT
11:48 quiz de Autenticación y Autorización
- 31

Integración del SDK de OpenAI en Node.js para automatizar contenido
28:26 - 32

Documentación automática de APIs con Swagger en NestJS
15:59 - 33

Preparar una API Node.js para producción: seguridad y despliegue
10:46 - 34

Desplegar aplicación Node.js a producción con Railway y PostgreSQL
21:11 - 35

Desarrollo de API REST escalable con NestJS en producción
02:36
Cuando trabajas con bases de datos y migraciones, los cambios inesperados pueden representar un riesgo para tu información. Aquí exploramos cómo realizar modificaciones en el esquema sin comprometer datos existentes, mostrando prácticas seguras y errores comunes que debes evitar.
¿Qué sucede al modificar el esquema con datos ya existentes?
Modificar una base de datos que ya tiene información puede generar preocupación por la posible pérdida de datos. Al agregar nuevas columnas o modificar campos, es esencial entender si la información previa se conserva o si puede eliminarse accidentalmente.
- Al crear la estructura inicial de la base, las tablas están vacías.
- Se agregan usuarios y categorías para simular escenarios reales.
- Se crean artículos con campos simples, sin validaciones complejas.
- Se observa cómo las modificaciones en el esquema pueden afectar los datos existentes.
¿Cómo agregar nuevos campos a tablas sin perder datos?
Agregar columnas nuevas como description o cover image en categorías debe hacerse de manera cuidadosa, definiendo correctamente las restricciones.
- Si un campo nuevo no existía antes, se recomienda permitir valores nulos (nullable).
- Si el campo fuera obligatorio desde el inicio, habría que poblar manualmente la información o trabajar con el equipo de datos para automatizar ese proceso.
- Es prudente primero agregar la columna como nullable, llenar la información faltante, y sólo entonces cambiar la restricción para evitar nulos.
¿Qué efectos tiene modificar restricciones de columnas existentes?
Modificar restricciones, como el tamaño de un varchar, puede poner en peligro la información si no se realiza correctamente.
- El sistema de migraciones automatizado puede eliminar la columna y crearla de nuevo, borrando así todos los datos previos.
- Una migración automatizada que elimine y vuelva a agregar columnas puede resultar en la pérdida completa de información de ese campo.
- Si solo se necesita cambiar un límite de caracteres, lo correcto es realizar un alter column en lugar de un drop column.
¿Qué pasos seguir para migraciones seguras y manuales?
Cuando el sistema automatizado genera migraciones peligrosas, lo mejor es crear una migración manual.
- Genera una migración personalizada para modificar solamente la restricción necesaria sin borrar la columna.
- Un ejemplo correcto sería:
ALTER TABLE posts ALTER COLUMN cover_image TYPE VARCHAR(900);
- Si es necesario revertir cambios, solo la estructura se puede restaurar, pero los datos eliminados no pueden recuperarse.
- Revisa siempre el archivo de migración generado antes de ejecutarlo en producción.
¿Qué buenas prácticas recomiendan para evitar la pérdida de información?
Gestionar migraciones implica revisar y comprender los cambios antes de aplicarlos, más aún si ya hay datos en la base.
- Siempre revisa la migración que se generó, prestando atención a instrucciones peligrosas como drop column.
- Haz los cambios delicados de manera manual o consulta con el equipo de datos antes de correr migraciones en producción.
- Utiliza comandos de migraciones adecuados, tanto para automatizaciones como para personalizaciones.
- Recuerda que perder datos puede ser muy perjudicial, así que ante la duda, verifica y ajusta las migraciones manualmente.
¿Has tenido que enfrentar cambios en bases de datos con información activa? Comparte tu experiencia y aporta tus recomendaciones para mantener la integridad de los datos.