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

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more