![Node.js con MySQL [CRUD completo]](/public/uploads/1758702603949-839013996.jpg)
Cómo conectar Node.js con MySQL y crear un CRUD completo paso a paso
Cuando empecé a trabajar con bases de datos en Node.js, uno de los primeros retos fue aprender a conectar mi aplicación con MySQL y realizar operaciones básicas: crear, leer, actualizar y eliminar datos. A esto se le conoce como CRUD, por sus siglas en inglés: Create, Read, Update, Delete.
En este tutorial te voy a mostrar cómo hacerlo paso a paso, con ejemplos claros y explicaciones sencillas, para que al final tengas una aplicación funcional que podrás adaptar a tus propios proyectos.
¿Qué necesitas antes de empezar?
- Node.js instalado en tu sistema.
Puedes verificarlo con:node -v
- MySQL instalado y corriendo en tu máquina o VPS.
Para comprobarlo:mysql -u root -p
- Un editor de texto (recomiendo VSCode).
- Conocimientos básicos de JavaScript.
Paso 1: Crear el proyecto de Node.js
Primero, vamos a crear una carpeta para el proyecto y a inicializar npm:
mkdir node-mysql-crud
cd node-mysql-crud
npm init -y
Esto creará un archivo package.json
que contendrá la configuración del proyecto.
Paso 2: Instalar dependencias necesarias
Instalaremos Express para crear el servidor y mysql2 para conectarnos a la base de datos:
npm install express mysql2
Opcionalmente, instalamos nodemon para reiniciar el servidor automáticamente cuando hagamos cambios:
npm install -D nodemon
Paso 3: Crear la base de datos y tabla en MySQL
Conéctate a MySQL y ejecuta lo siguiente:
CREATE DATABASE blogdb;
USE blogdb;
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
titulo VARCHAR(100) NOT NULL,
contenido TEXT,
creado TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Con esto tenemos lista la tabla posts
para guardar artículos.
Paso 4: Conectar Node.js a MySQL
Crea un archivo db.js
:
const mysql = require('mysql2');
// Configuración de la conexión
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'tu_contraseña',
database: 'blogdb'
});
// Conectar a MySQL
connection.connect((err) => {
if (err) {
console.error('Error conectando a MySQL:', err);
return;
}
console.log('Conectado a MySQL');
});
module.exports = connection;
Paso 5: Crear el servidor Express
Archivo index.js
:
const express = require('express');
const app = express();
const PORT = 3000;
const db = require('./db');
// Middleware
app.use(express.json());
// Rutas básicas
app.get('/', (req, res) => {
res.send('API CRUD con Node.js y MySQL funcionando 🚀');
});
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
});
Ejecuta el servidor:
node index.js
Paso 6: Implementar operaciones CRUD
Ahora crearemos las rutas para gestionar los posts.
Crear (POST)
app.post('/posts', (req, res) => {
const { titulo, contenido } = req.body;
const sql = 'INSERT INTO posts (titulo, contenido) VALUES (?, ?)';
db.query(sql, [titulo, contenido], (err, result) => {
if (err) throw err;
res.json({ id: result.insertId, titulo, contenido });
});
});
Leer (GET)
// Todos los posts
app.get('/posts', (req, res) => {
db.query('SELECT * FROM posts', (err, results) => {
if (err) throw err;
res.json(results);
});
});
// Post por id
app.get('/posts/:id', (req, res) => {
const { id } = req.params;
db.query('SELECT * FROM posts WHERE id = ?', [id], (err, result) => {
if (err) throw err;
res.json(result[0]);
});
});
Actualizar (PUT)
app.put('/posts/:id', (req, res) => {
const { id } = req.params;
const { titulo, contenido } = req.body;
const sql = 'UPDATE posts SET titulo = ?, contenido = ? WHERE id = ?';
db.query(sql, [titulo, contenido, id], (err) => {
if (err) throw err;
res.json({ mensaje: 'Post actualizado correctamente' });
});
});
Eliminar (DELETE)
app.delete('/posts/:id', (req, res) => {
const { id } = req.params;
const sql = 'DELETE FROM posts WHERE id = ?';
db.query(sql, [id], (err) => {
if (err) throw err;
res.json({ mensaje: 'Post eliminado correctamente' });
});
});
Paso 7: Probar la API
Puedes usar Postman, Insomnia o curl
para probar los endpoints.
Ejemplo de crear un post:
curl -X POST http://localhost:3000/posts -H "Content-Type: application/json" -d '{"titulo":"Mi primer post", "contenido":"Contenido del post"}'
Paso 8: Mejoras recomendadas
Lo que hicimos es una API básica. Para producción, te recomiendo:
- Usar dotenv para guardar las credenciales de la BD.
- Manejar errores con middleware de Express.
- Agregar validaciones de datos.
- Implementar paginación en el listado de posts.
- Conectar un frontend (React, Angular, Vue) para mostrar los datos.
Conclusión
Conectar Node.js y MySQL es más sencillo de lo que parece. Con Express y mysql2, en pocas líneas de código puedes crear una API CRUD completa y lista para usarse en proyectos reales.
Este tutorial te servirá como base para construir aplicaciones más avanzadas, desde blogs hasta sistemas de gestión y paneles de administración.