Introducción al trabajo con bases de datos en JavaScript (Node.js)
\nEl desarrollo web moderno rara vez prescinde de la interacción con bases de datos. Ya sea para almacenar usuarios, publicaciones de blog o datos para análisis, saber trabajar con bases de datos (BD) es una habilidad obligatoria para todo desarrollador. En este artículo, veremos los dos tipos de bases de datos más populares: la relacional PostgreSQL y la orientada a documentos MongoDB. Escribiremos ejemplos sencillos en JavaScript (Node.js) que le ayudarán a comenzar a trabajar con ambos sistemas.
\n\n1. Preparación del entorno e instalación de dependencias
\nAntes de escribir código, es necesario instalar los controladores para la interacción de Node.js con las bases de datos seleccionadas. Para ello, cree un nuevo proyecto e instale los paquetes a través de npm.
\n\nInstalación de controladores
\n- \n
- pg — un cliente popular para PostgreSQL. \n
- mongoose — un ODM (Object Document Mapper) para MongoDB, que simplifica el trabajo con colecciones. \n
mkdir db-example && cd db-example\nnpm init -y\nnpm install pg mongoose\n\nAhora su entorno está listo para experimentar.
\n\n2. Trabajo con PostgreSQL desde Node.js
\nPostgreSQL es una potente base de datos relacional que utiliza SQL para las consultas. Nos conectaremos a un servidor local, crearemos una tabla y realizaremos operaciones CRUD básicas (Create, Read, Update, Delete).
\n\nConexión a la base de datos
\nCree un archivo postgres.js y agregue el siguiente código para la conexión:
const { Pool } = require('pg');\n\nconst pool = new Pool({\n user: 'your_username',\n host: 'localhost',\n database: 'testdb',\n password: 'your_password',\n port: 5432,\n});\n\nasync function connect() {\n try {\n const client = await pool.connect();\n console.log('Conectado a PostgreSQL');\n client.release();\n } catch (err) {\n console.error('Error de conexión:', err);\n }\n}\n\nconnect();\n\nCreación de tabla e inserción de datos
\nAhora agreguemos una función para crear la tabla users e insertar registros:
async function createTable() {\n const query = `\n CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n email VARCHAR(100) UNIQUE NOT NULL\n );\n `;\n await pool.query(query);\n console.log('Tabla users creada');\n}\n\nasync function insertUser(name, email) {\n const query = 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *';\n const values = [name, email];\n const res = await pool.query(query, values);\n console.log('Usuario agregado:', res.rows[0]);\n}\n\n// Ejemplo de uso\ncreateTable().then(() => insertUser('Iván', 'ivan@example.com'));\n\nLectura y actualización de datos
\nObtengamos todos los usuarios y actualicemos el email:
\nasync function getUsers() {\n const res = await pool.query('SELECT * FROM users');\n console.log('Todos los usuarios:', res.rows);\n}\n\nasync function updateUserEmail(id, newEmail) {\n const query = 'UPDATE users SET email = $1 WHERE id = $2 RETURNING *';\n const res = await pool.query(query, [newEmail, id]);\n console.log('Usuario actualizado:', res.rows[0]);\n}\n\ngetUsers().then(() => updateUserEmail(1, 'ivan_new@example.com'));\n\nPostgreSQL es ideal para proyectos donde la integridad de los datos y las relaciones complejas entre tablas son importantes.
\n\n3. Trabajo con MongoDB desde Node.js
\nMongoDB es una base de datos NoSQL que almacena datos en un formato similar a JSON (BSON). Es flexible y no requiere un esquema estricto. Para trabajar, usaremos Mongoose.
\n\nConexión a MongoDB
\nCree un archivo mongo.js:
const mongoose = require('mongoose');\n\nconst connectDB = async