Trabajo con bases de datos en JavaScript: PostgreSQL y MongoDB en la práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué un desarrollador debe conocer SQL y NoSQL?

El desarrollo web moderno con JavaScript (Node.js) rara vez prescinde de la interacción con bases de datos. La elección entre sistemas de gestión de bases de datos relacionales (PostgreSQL) y orientados a documentos (MongoDB) es una de las tareas arquitectónicas clave. En este artículo, analizaremos en la práctica cómo conectarse a ambas bases de datos, realizar operaciones CRUD y elegir la herramienta adecuada para una tarea específica.

Usaremos bibliotecas populares: pg para PostgreSQL y mongoose para MongoDB. Todos los ejemplos de código están en Node.js.



1. PostgreSQL en Node.js: enfoque relacional

1.1. Conexión y configuración

PostgreSQL es un potente sistema de gestión de bases de datos relacional con soporte para SQL. Para trabajar con él en Node.js, instale el paquete pg:

npm install pg

Ejemplo de conexión a la base de datos local mydb:

const { Pool } = require('pg');

const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydb', password: 'secret', port: 5432,});

// Prueba de conexiónpool.query('SELECT NOW()', (err, res) => { if (err) { console.error('Error de conexión:', err); } else { console.log('Conectado a PostgreSQL:', res.rows[0].now); }});


1.2. Operaciones CRUD (crear, leer, actualizar, eliminar)

Creemos la tabla users y realicemos operaciones básicas.

Creación de tabla:

const createTable = async () => {  const query = `    CREATE TABLE IF NOT EXISTS users (      id SERIAL PRIMARY KEY,      name VARCHAR(100) NOT NULL,      email VARCHAR(100) UNIQUE NOT NULL,      age INTEGER    );  `;  await pool.query(query);  console.log('Tabla users creada');};

createTable();

Inserción de datos (INSERT):

const addUser = async (name, email, age) => {  const query = 'INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING *';  const values = [name, email, age];  const res = await pool.query(query, values);  console.log('Usuario agregado:', res.rows[0]);};

addUser('Iván Petrov', 'ivan@example.com', 30);

Lectura de datos (SELECT):

const getUsers = async () => {  const res = await pool.query('SELECT * FROM users');  console.log('Todos los usuarios:', res.rows);};

getUsers();

Actualización de datos (UPDATE):

const updateUserAge = async (id, newAge) => {  const query = 'UPDATE users SET age = $1 WHERE id = $2 RETURNING *';  const values = [newAge, id];  const res = await pool.query(query, values);  console.log('Usuario actualizado:', res.rows[0]);};

updateUserAge(1, 31);

Eliminación de datos (DELETE):

const deleteUser = async (id) => {  const query = 'DELETE FROM users WHERE id = $1 RETURNING *';  const values = [id];  const res = await pool.query(query, values);  console.log('Usuario eliminado:', res.rows[0]);};

deleteUser(1);

Observe el uso de consultas parametrizadas ($1, $2). Esto protege contra inyecciones SQL.



1.3. ¿Cuándo elegir PostgreSQL?

  • Se requiere una estructura de datos estricta y soporte de integridad (claves foráneas, transacciones).
  • Se necesitan consultas JOIN complejas y agregaciones.
  • Trabajo con datos financieros o críticos.
  • El proyecto utiliza un ORM como Sequelize o TypeORM.


2. MongoDB en Node.js: flexibilidad de NoSQL

2.1. Conexión a través de Mongoose

MongoDB es una base de datos orientada a documentos, donde los datos se almacenan en formato JSON-like (BSON). Para trabajar con ella, instale mongoose:

npm install mongoose

Conexión al servidor local de Mo

Blogs

Book Recommendations