Para conectar Node.js con MySQL, se utiliza el paquete mysql2 con promise para manejar consultas asincrónicas.
Se configura un pool de conexiones para optimizar el rendimiento.
A continuación, se muestran operaciones CRUD (crear, leer, actualizar, eliminar) sobre una tabla de usuarios, permitiendo una fácil interacción con la base de datos.
const mysql = require('mysql2/promise');
// Configuración de conexión
const pool = mysql.createPool({
host: 'localhost',
user: 'tu_usuario',
password: 'tu_contraseña',
database: 'nombre_base_datos',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
// Operaciones CRUD
class UsuarioRepositorio {
// Crear usuario
async crear(usuario) {
const [resultado] = await pool.execute(
'INSERT INTO usuarios (nombre, email) VALUES (?, ?)',
[usuario.nombre, usuario.email]
);
return resultado.insertId;
}
// Obtener todos los usuarios
async obtenerTodos() {
const [usuarios] = await pool.execute('SELECT * FROM usuarios');
return usuarios;
}
// Obtener usuario por ID
async obtenerPorId(id) {
const [usuarios] = await pool.execute(
'SELECT * FROM usuarios WHERE id = ?',
[id]
);
return usuarios[0];
}
// Actualizar usuario
async actualizar(id, datosActualizados) {
await pool.execute(
'UPDATE usuarios SET nombre = ?, email = ? WHERE id = ?',
[datosActualizados.nombre, datosActualizados.email, id]
);
}
// Eliminar usuario
async eliminar(id) {
await pool.execute('DELETE FROM usuarios WHERE id = ?', [id]);
}
} Este ejemplo muestra cómo conectar Node.js con PostgreSQL usando Sequelize, un ORM que facilita la interacción con la base de datos.
Se define un modelo Usuario con validaciones y restricciones, y se implementan operaciones CRUD para gestionar usuarios de manera eficiente y asincrónica.
Sequelize maneja la sincronización del modelo con la base de datos y simplifica las consultas SQL.
const { Sequelize, DataTypes } = require('sequelize');
// Configuración de conexión
const sequelize = new Sequelize('base_datos', 'usuario', 'contraseña', {
host: 'localhost',
dialect: 'postgres',
logging: false
});
// Definición de modelo
const Usuario = sequelize.define('Usuario', {
nombre: {
type: DataTypes.STRING,
allowNull: false
},
email: {
type: DataTypes.STRING,
unique: true,
validate: {
isEmail: true
}
}
});
// Sincronizar modelo con base de datos
sequelize.sync();
// Operaciones CRUD con Sequelize
class UsuarioRepositorio {
// Crear usuario
async crear(datos) {
return await Usuario.create(datos);
}
// Obtener todos los usuarios
async obtenerTodos() {
return await Usuario.findAll();
}
// Obtener usuario por ID
async obtenerPorId(id) {
return await Usuario.findByPk(id);
}
// Actualizar usuario
async actualizar(id, datosActualizados) {
const usuario = await Usuario.findByPk(id);
return await usuario.update(datosActualizados);
}
// Eliminar usuario
async eliminar(id) {
const usuario = await Usuario.findByPk(id);
return await usuario.destroy();
}
} Para entender mejor cómo conectar una base de datos MySQL con Node.js, te comparto un ejemplo completo en GitHub.
Además, puedes ver una guía paso a paso en este video de YouTube para entender cómo funciona la implementación.