Paso 6: Conexión con la Base de Datos**
En este paso, exploramos cómo establecer una conexión entre nuestra aplicación Node.js y una base de datos MySQL para persistir datos de manera eficiente. Aprenderás a:
- Configurar las credenciales de tu base de datos en Node.js.
- Utilizar la librería
mysql2
para gestionar la conexión. - Crear consultas básicas para insertar, actualizar y recuperar datos.
Este paso es fundamental para optimizar el rendimiento de la aplicación, evitando lecturas continuas desde archivos en Google Drive y permitiendo un análisis más eficiente de los datos almacenados. 🚀
Documentación del Código para Conexión a Base de Datos con MySQL en Node.js
Este código establece una conexión a una base de datos MySQL utilizando mysql2 y gestiona errores de conexión y consultas utilizando promesas. A continuación se detalla cada parte del proceso para documentar su uso.
Configuración del Código
-
Requerimientos y Configuración del Entorno:
- Se requiere el paquete
mysql2
para interactuar con la base de datos MySQL. - Se utiliza
dotenv
para gestionar variables de entorno, permitiendo configurar de manera segura la información sensible como credenciales de base de datos. - La configuración de la conexión se obtiene de un archivo de configuración o desde variables de entorno si se usa
dotenv
.
const mysql = require('mysql2'); const { promisify } = require('util'); require('dotenv').config(); // Cargar variables de entorno const localhost = process.env.DATABASE_CONFIG || require('../config'); // Recuperar configuración desde dotenv o archivo de configuración
- Se requiere el paquete
-
Creación de la Pool de Conexiones:
- Se crea una pool de conexiones utilizando la configuración recuperada. Esto ayuda a mantener conexiones persistentes y reutilizables, optimizando el rendimiento.
const pool = mysql.createPool(localhost);
-
Promisificación de Consultas:
- Se promissifican las consultas para manejarlas de manera asíncrona mediante
promisify
. Esto simplifica la gestión de resultados y errores en las consultas.
pool.query = promisify(pool.query);
- Se promissifican las consultas para manejarlas de manera asíncrona mediante
-
Gestión de Errores:
- Se manejan posibles errores de conexión y consultas. Por ejemplo, errores como acceso denegado, conexión perdida o cantidad máxima de conexiones alcanzadas son manejados de forma específica.
pool.getConnection() .then(connection => { connection.release(); console.log("Conexión establecida correctamente."); }) .catch(err => { if (err.code === 'ER_NOT_SUPPORTED_AUTH_MODE' || err.code === 'ER_ACCESS_DENIED_ERROR') { console.error('Error de acceso denegado. Revise las credenciales.'); } else if (err.code === 'PROTOCOL_CONNECTION_LOST') { console.error('La conexión con la base de datos se perdió.'); } else if (err.code === 'ER_CON_COUNT_ERROR') { console.error('Demasiadas conexiones activas.'); } else if (err.code === 'ECONNREFUSED') { console.error('La conexión con la base de datos fue rechazada.'); } else { console.error(`Error desconocido: ${err.message}`); } });
Explicación Detallada del Código
-
Requerimientos y Configuración:
-
mysql2
proporciona una API para interactuar con MySQL. -
dotenv
es usado para manejar configuraciones a través de un archivo.env
o directamente variables de entorno. -
localhost
contiene los datos de configuración de la base de datos como host, usuario, contraseña, etc.
-
-
Creación de Pool:
-
mysql.createPool(localhost)
crea una conexión persistente, lo cual es ideal para aplicaciones que manejan múltiples conexiones simultáneamente.
-
-
Promisificación:
- Las consultas SQL se promissifican para usarse como funciones asíncronas, facilitando su manejo en aplicaciones modernas.
-
Gestión de Errores:
- Los errores comunes como conexiones perdidas, accesos denegados, o rechazo de consultas se manejan cuidadosamente para proporcionar mensajes útiles al desarrollador y evitar bloqueos.
Uso en Proyectos
Este código es útil para conectar aplicaciones Node.js con bases de datos MySQL, proporcionando una solución robusta para la gestión de conexiones y errores mediante técnicas modernas como la promisificación y manejo adecuado de excepciones.
Top comments (0)