Configuración de Conexiones a Base de Datos en Heroku y Entorno Local

Clase 20 de 22Curso de NestJS: Autenticación con Passport y JWT

Resumen

¿Cómo configurar las variables de entorno para la conexión de base de datos en Heroku?

Iniciar un proyecto en Heroku y conectarse a una base de datos Postgres puede parecer complicado al principio, pero con la correcta configuración de las variables de entorno, el proceso se simplifica. Heroku proporciona una variable de entorno denominada DATABASE_URL que encapsula todos los datos necesarios para la conexión, eliminando la necesidad de especificar parámetros como usuario, contraseña, host, y puerto de manera individual.

¿Qué cambios realizar en el proyecto para leer la variable DATABASE_URL?

En nuestro proyecto es fundamental realizar cambios para poder leer la variable DATABASE_URL. Antes, teníamos la conexión muy segmentada:

  • Protocolo (ej. Postgres)
  • Usuario
  • Contraseña
  • Host
  • Puerto

Ahora, debemos integrar estos elementos en una única URL en formato estándar, tanto para entornos de desarrollo como de producción. En este contexto, el formato de la URL sería algo como:

postgres://usuario:contraseña@host:puerto/baseDatos

¿Cómo integrar la configuración en los módulos de base de datos?

Una vez obtenida la URL de conexión, debemos modificar los módulos de base de datos del proyecto. Aquí, pasaremos de leer variables individuales a solo necesitar la URL de conexión. Los pasos serían los siguientes:

  • En el módulo donde leemos la configuración de base de datos, cambiaríamos el método actual a la lectura de la variable POSTGRES_URL.
  • La variable POSTGRES_URL correspondería al valor de DATABASE_URL proporcionado por Heroku.

Por ejemplo:

const databaseURL = process.env.POSTGRES_URL;
// Usar `databaseURL` para la conexión con el DBMS

¿Qué ajustes realizar antes del 'deployment' en Heroku?

Antes de proceder al deployment, son necesarios unos ajustes:

  1. Variables de entorno adicionales: Algunas configuraciones, como DATABASE_NAME, PORT, o secretos como API_KEY y JW_SECRET, deben ser gestionadas localmente y en Heroku. Asegúrate de que estas claves no se pierdan en producción.

  2. Validaciones: En la sección de validación de variables, asegúrate de verificar que DATABASE_URL esté presente cuando se ejecuta en Heroku.

  3. Configuración SSL: Habilitar la configuración SSL requerida. Para ello, añade lo siguiente en tu configuración de conexiones:

    ssl: { rejectUnauthorized: false }
    

Esta configuración es crítica para asegurar las transmisiones de datos en un entorno de producción.

¿Cómo verificar y depurar después del 'deployment'?

Una vez hecho el deployment, es crucial verificar que las conexiones sean exitosas. Esto se puede hacer visitando la URL donde se haya realizado el deployment. De igual forma, el seguimiento de logs puede proporcionar información valiosa para detectar y solucionar problemas.

Para seguir los logs en tiempo real, usa el siguiente comando:

heroku logs --tail

En caso de errores relacionados con la base de datos, asegúrate de haber corrido todas las migraciones que el esquema de tu base de datos requiere. Este paso es esencial, y su falta puede resultar en mensajes de error indicando tablas o registros inexistentes.


La correcta configuración de las variables de entorno y la adaptación del proyecto para utilizar DATABASE_URL simplifican significativamente el proceso de deployment en Heroku. Mantén la configuración ordenada y comprueba sistemáticamente el buen funcionamiento con logs para combatir posibles errores. ¡Sigue adelante y no dejes de explorar nuevas formas de optimizar y mejorar tu flujo de trabajo con Heroku!