Conexión de Node.js a PostgreSQL usando Node PostgreSQL Driver
Clase 6 de 27 • Curso de Backend con Node.js: Base de Datos con PostgreSQL
Resumen
¿Cómo conectar nuestra aplicación en Node con PostgreSQL utilizando Node PostgreSQL?
Conectar tu aplicación de Node.js con PostgreSQL es un paso fundamental para manejar bases de datos de manera eficiente y asíncrona. Node PostgreSQL (PG) es un driver nativo que permitirá que nuestras aplicaciones puedan interactuar con bases de datos PostgreSQL mediante promesas y callbacks, lo cual resulta indispensable cuando se trabaja con arquitectura Clean. A continuación, te explicamos cómo lograr esta conexión de manera efectiva y ordenada.
Instalación de PG y configuración del cliente
Para comenzar a conectar nuestra aplicación Node con una base de datos PostgreSQL, es esencial instalar el driver PG. Este se encarga de gestionar las conexiones y ejecutar consultas usando promesas. La instalación se realiza desde la terminal usando el siguiente comando:
npm install pg
Una vez instalado el driver, procederemos a configurar el cliente, que será el intermediario entre nuestra aplicación y la base de datos.
Creación de una capa de librerías
En la arquitectura Clean, es vital organizar el código en diferentes capas según su funcionalidad. Las librerías se utilizan para manejar conexiones con terceros, como bases de datos o APIs. Vamos a crear una nueva carpeta denominada libs
para gestionar estas conexiones.
// Require del módulo PG
const { Client } = require('pg');
// Configuración de la conexión con PostgreSQL
const client = new Client({
host: 'localhost',
port: 5432,
user: 'Nico',
password: 'admin123',
database: 'MyStore'
});
Implementación de una función asíncrona para conectar
Gestionar nuestras conexiones de manera asíncrona es fundamental para el rendimiento y la estabilidad de la aplicación. Creamos una función asíncrona getConnection
que devuelve una instancia del cliente conectada a PostgreSQL.
async function getConnection() {
await client.connect(); // Conectamos el cliente
return client; // Retornamos el cliente para su uso posterior
}
// Exportamos la función para usarla en otras partes de la aplicación
module.exports = { getConnection };
Implementación dentro del servicio de la aplicación
Para aprovechar la conexión, integramos la función getConnection
en nuestros servicios. En este caso, se implementa dentro de UserService
para realizar consultas sobre tablas específicas.
// Importación de la función de conexión
const { getConnection } = require('../libs/PostgresJS');
async function findUsers() {
const client = await getConnection(); // Esperamos a que se conecte
const res = await client.query('SELECT * FROM tags'); // Hacemos consulta SQL
return res.rows; // Devolvemos los resultados
}
Probar la conexión y ejecución de consultas
Con la conexión establecida, podemos ejecutar consultas SQL a través de nuestro servicio y verificar que los datos se devuelven correctamente. Usando herramientas como Insomnia, se puede solicitar datos y observar la respuesta obtenida del servicio.
Inserción y consulta de datos con PG Admin
Es vital verificar que nuestra tabla de pruebas esté poblada. Usando PG Admin, podemos insertar datos y ejecución de consultas para verificar la correcta funcionalidad de nuestro setup.
INSERT INTO tasks (title, completed) VALUES ('Completar los cursos de Nicolás', false);
Después de la inserción, verificamos que los datos estén disponibles al realizar un request con nuestra API bien configurada, que conecta todas las capas desde controladores hasta la base de datos.
Aplicación de la arquitectura Clean
Al incluir esta conexión, no solo incrementamos las funcionalidades de nuestra aplicación, sino que también mantenemos una estructura organizada y sostenible mediante el uso de la arquitectura Clean, que segmenta las distintas estructuras de lógica y data. Esto resalta la importancia de gestionar adecuadamente la conexión a terceros manteniendo una arquitectura clara y eficiente.
¡Anímate a seguir explorando nuevas funcionalidades y mejorar tu aplicación! Con cada conexión establecida y cada consulta correcta, tu entendimiento de Node y PostgreSQL se fortalece, brindándote las herramientas necesarias para crear aplicaciones poderosas y bien estructuradas.