Aprender Node.js, API con express.js y mongoDB

Alejandro Roa
Nov 1 · 4 min read

Node.js es un entorno de ejecución para JavaScript construido con el motor V8 de Chrome

Sobre Node.js podemos crear APIS de forma fácil a través de librerías o frameworks, en este caso vamos a tocar Express.js

Node.js tiene particularidades en cuanto a su comportamiento, antes de empezar a desarrollar es mejor entender cómo funciona su core y el event loop, puedes ir a una articulo que he publicado hace unos meses para ir entendiendo sobre este tema dando click AQUI

Teniendo en cuenta las cosas que debemos evitar para bloquear el event loop y el concepto de procesos asíncronos podemos empezar:

  1. Instalamos Node.js en nuestra máquina y luego ejecutar en consola el siguiente comando: npm init
  2. Con npm init creamos el package.json e integramos los siguientes paquetes:

Body-Parser: Nos permite manipular las respuestas del API en formato json.

Cors: Nos permite acceder al API vía cliente (a través del navegador) ya sea con axios (usado en su mayoría con React o Vue), HttpClient (de Angular) o incluso Ajax y JQuery.

Express: Es el framework que vamos a usar.

Mongoose: Es una librería que nos permite conectarnos y manipular consultas e interacción con Mongodb.

Luego de esto creamos nuestro archivo inicial para configurar nuestro proyecto y servidor:

Aquí existen dos puntos a destacar, la llamada a la configuración con mongodb /src/database y a las rutas con ./routes/clients. Vamos a explicar cada uno:

database.js: Nos permite conectarnos con mongodb

router.js: Nos permite crear los endpoints y en este caso los procesos que cada uno va ejecutar. Cabe destacar que como vamos a necesitar tocar la base de datos es necesario llamar al modelo de datos que corresponde, en este caso el API va interactuar con un modelo clients.

Veamos primero el modelo Client:

De esta forma definimos un Schema con mongoose y configuramos cada campo en cuanto a su tipo y validación, además de exportar el módulo para ser usado en otro sitio. Ahora si, veamos nuestras rutas y cada proceso.

ENDPOINTS:

  1. /clients (get): Consulta a la db todos los clientes registrados.

2. /clients (post): Guarda un cliente.

3. /clients (get/:id): Consulta un cliente.

4. /clients (put:/id): Actualiza un cliente.

5. /clients (delete:/id): Elimina un cliente.

Luego de ver cada endpoint debo explicar un par de cosas:

  1. Siempre en los procesos debemos manejar un try catch para poder manipular los errores de forma correcta (si existen otras formas y me lo comentas seria genial)
  2. Todos los procesos que interactuan con una base de datos son procesos asíncronos (porque node.js los tiene que delegar y eso es directamente proporcional a que tiene que esperar por la respuesta) por lo tanto debemos implementarlo a través de funciones que no bloqueen el event loop. En este caso estoy usando async await, declarando async al crear la función y await para obtener la respuesta de dicha interacción.

Listo! ahora ejecutamos node index.js en la consola para levantar el servidor y con Postman podemos verificar el funcionamiento de cada endpoint:

Con este conocimiento ya tenemos lo elemental para desarrollar en Node.js con Express.js (en este caso) pero entender como funciona node nos va ayudar a usar cualquier herramienta que tenga relación.

El proyecto lo pueden bajar AQUÍ

Saludos!

Alejandro Roa

Written by

Padre de Ana Lucia ❤️ Programo 💻

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade