Bitácora de desarrollo #2 Sesión: Backend Node.js + Express + MSSQL

Autor: Santiago Villarreal

Fecha: 17 de marzo de 2025

Hora de inicio: 14:00

Hora de fin: 17:00

Horas trabajadas: 3.5 h


Descripción de avances

En esta sesión se implementó el backend de la aplicación de empleados usando Node.js, TypeScript y Express, conectado a una base de datos Microsoft SQL Server en Docker.

Trabajo realizado:

- Base de datos: Se creó el procedimiento almacenado sp_insert_empleado en database.sql, que recibe @Nombre y @Salario, verifica duplicados y devuelve un código de resultado mediante un parámetro OUTPUT.

- Estructura del backend: Se definió una arquitectura modular en proyecto-1/backend/ con carpetas para config, controllers, routes, types y utils.


- Configuración: Se configuró el pool de conexiones MSSQL como singleton en db.ts, usando variables de entorno para credenciales.


API REST:

GET /empleados: Llama a sp_list_empleados y devuelve la lista ordenada por nombre.

POST /empleados: Valida el body, llama a sp_insert_empleado y maneja el caso de nombre duplicado (400) y éxito (200).

Validaciones: Se implementó validateEmpleado con regex para el nombre (/^[a-zA-Z\s-]+$/) y validación de salario mayor que 0.

Tipado: Todo el código está tipado en TypeScript, sin uso de any.

Problemas encontrados y soluciones

- Problema 1: Errores de TypeScript al compilar por falta de tipos para cors y mssql.


- Solución: Se instalaron @types/cors y @types/mssql como dependencias de desarrollo.


- Problema 2: El procedimiento sp_insert_empleado no existía en la base de datos.


- Solución: Se ejecutó el script database.sql actualizado contra la base de datos para crear el procedimiento.


Tecnologías utilizadas:

- Node.js + TypeScript

- Express

- mssql (cliente para SQL Server)

- dotenv, cors

Próximos pasos

Integrar el frontend con la API.

Probar el flujo completo de inserción y listado de empleados. 

Comentarios

Entradas más populares de este blog

Entrada sesión de prueba y error #1

Bitácora de desarrollo #4 Sesión: Conexión backend con frontend y testing