Node JS puede ser conectado a PostgreSQL fácilmente a través del paquete pg.
En este tutorial vamos a ver cómo conectar Node.JS con PostgreSQL y hacer las cuatro operaciones básicas de la base de datos: Create, read, update y delete (CRUD); todo esto evitando inyecciones SQL y usando un poco el model MVC.
Para la interfaz vamos a usar Bootstrap (ya que será responsivo), y para que el usuario use nuestra app web vamos a usar Express.

Aunque estos ejemplos son con la web, los mismos pueden ser ejecutados en la terminal sin ningún problema.
Requisitos y recomendaciones
Recuerda instalar Node.JS y también PostgreSQL.
Si no sabes mucho sobre Express, te recomiendo leer primero este post o este otro que usa express-generator.
¿Te gusta más MySQL? mira este CRUD con MySQL y Node.js
Instalar librería de pg
En el código que dejaré al final estará el package,json en donde están todas las dependencias de la app, sin embargo nunca sobra dejar el comando de instalación:
npm install --save pg
Conexión y base de datos
Vamos a conectarnos a una tabla de productos que tienen id autoincrementable, nombre y precio.
La estructura de la tabla es la siguiente:
Nos vamos a conectar a través de ella creando una conexión a través de un pool. No olvides cambiar tus credenciales de acuerdo a tu configuración.
Si necesitas crear una base de datos con usuarios mira este post.
Las consultas
Cuando establecemos una conexión con la base de datos podemos llamar al método query con la consulta como cadena y opcionalmente un arreglo de valores que van a remplazar a los placeholders.
El placeholder es aquel indicado con $1
, $2
, etcétera y evita las inyecciones SQL. En los ejemplos veremos su uso.
Por cierto, vamos a usar async y await, una manera sencilla de abstraer las promesas.
El modelo
Basta de charlas, es hora de ver el modelo de productos que se encargará de interactuar con la base de datos:
Cuando hacemos una consulta que devuelve datos, los mismos vienen en la propiedad rows
.
Si solo vamos a obtener un dato, accedemos a rows[0]
.
El controlador
Voy a usar el enrutador como controlador, pues se encargará de renderizar las vistas y pasarle datos a través de los modelos.
Si no sabes mucho sobre las rutas mira este post.
Como ves, algunas rutas se encargan de renderizar vistas y otras de recuperar datos del formulario. Para pasar datos a las vistas se pasa un objeto como segundo argumento a res.render
.
Las vistas
Las vistas son creadas con EJS, aunque pueden ser creadas con cualquier otro motor de plantillas. Comencemos viendo el encabezado y el pie, pues serán unas cosas que siempre vamos a incluir en todas las demás plantillas.
Recuerda que está basado en una plantilla de Bootstrap 4.
Formulario para insertar datos

El formulario para insertar datos es el siguiente, fíjate en el atributo name que tiene cada input, pues a él accedemos desde el router de express.
Editar producto
Para editar, debemos obtener el id producto de la URL, obtenerlo desde nuestro modelo y después rellenar el formulario.

Mostrar productos
Para mostrarlos dibujamos una tabla con los detalles del producto y además dos enlaces.
Un enlace es para eliminar y otro para editar.
Los enlaces parecen botones gracias a la clase btn, y a sus variantes.
Poniendo todo junto

Si quieres descarga el código de GitHub, asegúrate de haber instalado Node y PGSQL.
Dirígete a la carpeta del proyecto e instala las dependencias con:
npm install
Cuando se acaben de instalar ejecuta el proyecto con:
set debug=crud-postgresql-node:* & npm start
Finalmente visita localhost:3000
Conclusión
Node.JS y sus paquetes ayudan a que el desarrollador se centre en la lógica de la aplicación, pues solo tiene que conectar los paquetes entre sí y programar la lógica de negocio.
Dejo un enlace a la documentación oficial del paquete.
Te invito a leer más sobre Node y PostgreSQL.
Gracias ya encontré el proyecto en git
Excelente información, puedes compartir el proyecto con el código
Lea el post