Introducción al trabajo con bases de datos en JavaScript
El desarrollo web moderno con JavaScript es impensable sin la interacción con bases de datos. Node.js proporciona herramientas potentes para trabajar tanto con bases de datos relacionales (SQL) como con bases de datos orientadas a documentos (NoSQL). En este artículo, analizaremos en detalle la conexión y la ejecución de las operaciones principales con los dos SGBD más populares en el ecosistema JavaScript: PostgreSQL y MongoDB.
Aprenderá cómo instalar los drivers, configurar la conexión, ejecutar operaciones CRUD (Create, Read, Update, Delete) y tomar la decisión correcta entre SQL y NoSQL para su proyecto.
Preparación del entorno
Para trabajar con los ejemplos, necesitará tener instalado Node.js (versión 18+) y el gestor de paquetes npm. Asegúrese de que las bases de datos se estén ejecutando localmente o sean accesibles de forma remota.
1. Trabajo con PostgreSQL en Node.js
PostgreSQL es una potente base de datos relacional de código abierto. Para trabajar con ella en Node.js, utilizaremos la librería pg, el cliente oficial.
Instalación y conexión
npm install pgCrearemos un archivo db.js para configurar el pool de conexiones:
const { Pool } = require('pg');
const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydb', password: 'secret', port: 5432,});
module.exports = pool;Operaciones CRUD con PostgreSQL
Veamos las consultas básicas sobre la tabla users:
Creación de tabla (CREATE)
const createTable = async () => { const query = ` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, age INTEGER, created_at TIMESTAMP DEFAULT NOW() ); `; await pool.query(query); console.log('Tabla users creada');};Inserción de datos (INSERT)
const addUser = async (name, email, age) => { const text = 'INSERT INTO users(name, email, age) VALUES($1, $2, $3) RETURNING *'; const values = [name, email, age]; const res = await pool.query(text, values); console.log('Usuario añadido:', res.rows[0]); return res.rows[0];};
// UsoaddUser('Iván Petrov', 'ivan@example.com', 30);Lectura de datos (SELECT)
const getUsers = async (ageLimit) => { const res = await pool.query( 'SELECT * FROM users WHERE age > $1 ORDER BY created_at DESC', [ageLimit] ); return res.rows;};
// Obtener usuarios mayores de 25 añosgetUsers(25).then(users => console.log(users));Actualización y eliminación (UPDATE / DELETE)
const updateUser = async (id, newName) => { const res = await pool.query( 'UPDATE users SET name = $1 WHERE id = $2 RETURNING *', [newName, id] ); return res.rows[0];};
const deleteUser = async (id) => { await pool.query('DELETE FROM users WHERE id = $1', [id]); console.log(`Usuario con id ${id} eliminado`);};Importante: Utilice siempre consultas parametrizadas ($1, $2) para prevenir inyecciones SQL.
2. Trabajo con MongoDB en Node.js
MongoDB es la base de datos NoSQL más popular, que almacena datos en formato de documentos similares a JSON. Para trabajar con ella, utilizaremos el driver oficial mongodb o la popular librería ODM mongoose.
Instalación y conexión (usando mongoose)
npm install mongooseconst mongoose = require('mongoose');
const connectDB = async () => { try { await mongoose.connect('mongodb://localhost:27017/mydb'); console.log('MongoDB conectada'); } catch (error) { console.error('Error de conexión:', error); }};
connectDB();