Módulo 7Node.jsExpressPostgreSQL
Módulo VII — Node.js + PostgreSQL
En este módulo integrarás Node.js con PostgreSQL usando el driver oficial pg. Empezarás con una conexión simple y avanzarás hasta una arquitectura MVC completa con manejo robusto de errores, transacciones ACID y ORM con Sequelize.
¿Qué aprenderás?
- Conexión a PostgreSQL —
pg(node-postgres), Pool de conexiones y variables de entorno condotenv. - Consultas seguras — Parámetros posicionales (
$1, $2) para prevenir SQL injection. - Arquitectura MVC — Separación en Modelos, Controladores y Rutas con Express.
- Transacciones —
BEGIN,COMMIT,ROLLBACKy patrón de reintento con backoff exponencial. - Cursores — Lectura eficiente de grandes volúmenes de datos con
pg-cursor. - Sequelize ORM — Modelos, validaciones, asociaciones y sincronización automática de esquema.
Proyecto integrador
API REST Alke Wallet
Desarrollar la API REST de Alke Wallet con Node.js y PostgreSQL, aplicando arquitectura MVC, Pool de conexiones encapsulado, transacciones ACID y ORM con Sequelize.
Paso a paso
- Crea la base de datos
alke_walleten PostgreSQL con las tablasusuariosytransacciones(puedes usar el script del Módulo V como base). - Implementa la clase
ConexionDBcon Pool privado (#pool), lógica de reintento al arrancar y listener de errores pasivos del pool. - Construye la arquitectura MVC: carpetas
routes/,controllers/ymodels/para el recursousuarios. - Implementa el CRUD de usuarios con consultas parametrizadas:
GET /api/usuarios,POST /api/usuarios,PUT /api/usuarios/:id,DELETE /api/usuarios/:id. - Agrega el endpoint
POST /api/transferenciascon transacciónBEGIN / FOR UPDATE / COMMIT / ROLLBACKque valide saldo suficiente antes de transferir. - Enriquece los errores con códigos PostgreSQL (
23505,23503) mapeados a HTTP status codes correctos y configurar el middleware global de errores en Express. - (Opcional avanzado) Define los modelos
UsuarioyPublicacioncon Sequelize, configurahasMany / belongsToy sincroniza el esquema condb.sync({ alter: true }).
Entregable
Sube el link del repositorio GitHub que contenga:
- Proyecto completo con estructura MVC
.env.samplecon todas las variables requeridas (sin credenciales reales)README.mdcon instrucciones de configuración de PostgreSQL, instalación y ejecución- El repositorio no debe incluir
node_modules/ni el archivo.envcon credenciales