DEV Community

fabio hurtado
fabio hurtado

Posted on

Continuación del Hilo: Cómo Crear una Aplicación de Finanzas Personales Integrando Google Drive, MySQL y Node.js

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

  1. 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
    
  2. 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);
    
  3. 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);
    
  4. 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

  1. 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.
  2. 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.
  3. Promisificación:

    • Las consultas SQL se promissifican para usarse como funciones asíncronas, facilitando su manejo en aplicaciones modernas.
  4. 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.


Enter fullscreen mode Exit fullscreen mode

Top comments (0)