Conexión a Bases de Datos en Node.js: Guía Completa

Conexión con MySQL en Node.js

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.

javascript
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]);
}
}

Conexión con PostgreSQL y Sequelize

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.

javascript
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();
}
}
  Ejemplo de Conexión a MySQL con Node.js

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.