Trabajo con bases de datos en JavaScript (Node.js): PostgreSQL y MongoDB para principiantes
Al desarrollar aplicaciones web en JavaScript (Node.js), casi siempre es necesario guardar datos: usuarios, pedidos, artículos o registros. Para ello se utilizan bases de datos (BD). En esta guía, analizaremos los dos sistemas más populares: la relacional PostgreSQL y la orientada a documentos MongoDB. Aprenderá cómo conectarse a ellas desde Node.js y realizar operaciones CRUD básicas (crear, leer, actualizar, eliminar).
El artículo está dirigido a desarrolladores principiantes familiarizados con los fundamentos de JavaScript. Todos los ejemplos de código se pueden ejecutar en su proyecto.
1. PostgreSQL: base de datos relacional
PostgreSQL es una potente base de datos SQL donde los datos se almacenan en tablas con tipos de campos estrictos. Para trabajar con ella en Node.js, usaremos el paquete pg.
1.1. Instalación y conexión
Primero, instale el paquete a través de npm:
npm install pgCree un archivo db.js y configure la conexión a la base de datos local:
const { Pool } = require('pg');
const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydb', password: 'password', port: 5432,});
module.exports = pool;1.2. Creación de tabla y operaciones CRUD
Para empezar, crearemos una tabla users con los campos id, name y email. Luego, realizaremos todas las operaciones básicas.
const pool = require('./db');
// Creación de tablaasync function createTable() { await pool.query(` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL ); `); console.log('Tabla users creada');}
// Inserción de datos (CREATE)async function addUser(name, email) { const result = await pool.query( 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *', [name, email] ); return result.rows[0];}
// Lectura de datos (READ)async function getUsers() { const result = await pool.query('SELECT * FROM users'); return result.rows;}
// Actualización de datos (UPDATE)async function updateUser(id, name) { const result = await pool.query( 'UPDATE users SET name = $1 WHERE id = $2 RETURNING *', [name, id] ); return result.rows[0];}
// Eliminación de datos (DELETE)async function deleteUser(id) { await pool.query('DELETE FROM users WHERE id = $1', [id]); console.log('Usuario eliminado');}
// Ejemplo de uso(async () => { await createTable(); const newUser = await addUser('Iván', 'ivan@example.com'); console.log('Añadido:', newUser);
const users = await getUsers(); console.log('Todos los usuarios:', users);
await updateUser(1, 'Pedro'); await deleteUser(2);})();Importante: Utilice siempre consultas parametrizadas (a través de $1, $2) para evitar inyecciones SQL.
2. MongoDB: base de datos NoSQL
MongoDB almacena datos en formato de documentos similares a JSON (BSON). Para Node.js se utiliza el controlador oficial mongodb o la popular biblioteca mongoose. En este ejemplo, usaremos el controlador.
2.1. Instalación y conexión
npm install mongodbConexión a MongoDB local (puerto predeterminado 27017):
const { MongoClient } = require('mongodb');
const uri = 'mongodb://localhost:27017';const client = new MongoClient(uri);
async function connect() { await client.connect(); console.log('Conectado a MongoDB'); return client.db('mydb'); // base de datos mydb}
module.exports = { connect, client };2.2. Operaciones CRUD con la colección
En MongoDB, las tablas se llaman colecciones y las filas se