Persistencia de Datos con Node.js y PostgreSQL usando Docker
Resumen
¿Cuál es el proyecto que estamos desarrollando?
Estamos embarcándonos en la creación de un excelente proyecto: una tienda virtual. El objetivo es desarrollar el API completa de esta tienda, una tarea vital para cualquier desarrollador que desee entender cómo funciona el backend de aplicaciones complejas. En el curso anterior, nos ocupamos de controlar el routing y establecimos una capa de servicios. Sin embargo, hasta este punto todo esto permanecía en memoria. Ahora, en esta etapa del curso, buscamos ir más allá y aprender cómo hacer que estos datos persistan.
¿Cómo empezar con el proyecto?
Es fundamental contar con todo el setup inicial del proyecto. Si has seguido este curso desde el principio, es probable que ya tengas el proyecto configurado. Pero no te preocupes, si no es así, puedes clonar el proyecto desde el repositorio "curso Node.js Postgres" en Platzi.
Pasos para clonar el repositorio
Abre la terminal.
Ejecuta el siguiente comando para clonar el repositorio:
git clone <URL-del-repositorio>
Puede que desees cambiar el nombre de la carpeta por algo más amigable, como mystore-data:
git clone <URL-del-repositorio> mystore-data
Accede a la carpeta clonada:
cd mystore-data
¿Qué incluye el proyecto inicial?
Al clonar el repositorio, tendrás acceso a un proyecto con lo siguiente preconfigurado:
Servicios para categorías, órdenes, y productos. Hasta ahora, con persistencia solo en memoria.
Routing avanzado para órdenes y usuarios que conectan eficazmente con los servicios.
Métodos base para gestionar datos: nuestro objetivo es ir más allá y empezar a implementar la persistencia real.
Instalar dependencias y comprobar el funcionamiento
Instala las dependencias del proyecto:
npminstall
Ejecuta la aplicación en modo desarrollo utilizando NodeMon:
npm run dev
Esto te permitirá probar los endpoints como usuarios, productos y categorías usando herramientas como Insomnia.
¿Por qué usar Docker para la base de datos?
Los proyectos modernos requieren una conexión fiable a bases de datos relacionales como Postgres, MySQL o MariaDB. Para facilitar este proceso sin complicaciones ni la necesidad de instalar drivers en tu máquina, Docker se convierte en nuestro mejor aliado.
Ventajas de usar Docker
Facilidad de uso: Fácil instalación y configuración de entornos complejos.
Portabilidad: Los contenedores Docker pueden ser movidos y ejecutados en diferentes sistemas.
Consistencia: Permite mantener un entorno constante, reduciendo las diferencias de comportamiento en diversos entornos de desarrollo.
Nos adentraremos en esta herramienta en las próximas clases, asegurando que tengas un entorno de desarrollo completo y funcional. ¡Continúa aprendiendo y expandiendo tus habilidades en desarrollo backend!
Si alguno le interesa y le sirve, dejo el proyecto base, configurado con eslint para es6, y con sintaxis de import / exports, ya que el proyecto que esta disponible para descarga esta realizado con CommonJS
💡 Software con la capacidad de crear conexiones web y, en ocasiones, funge como un medio para el proceso de pruebas end-to-end.
Postmant. Plataforma tipo IDE colaborativa
Thunder Client. Cliente web similar a Postman
Thunder Client. Client para vscode
A la hora de instalar las dependencias hice:
npm i
tuve un error ya que no se instalaron adecuadamente por falta de permisos:
sudo npm i
Pase un buen rato tratando de saber porque no funcionaba jejeje.
Saludos
Excelente, tambien estaba con el mismo tema pero al ver tu mensaje pues se soluciono. super gracias y NUNCA PARES DE APRENDER
EL curso de Backend con Node de Api RESt estuvo muy bueno
21-02-2024:
Si señor, lo hice dos veces!
Se deberia añadir al proyecto un archivo con las configuraciones de imsomnia si es q las tiene (desconozco no la he usado realmente), o el export de POSTMAN de las collection de los servicios para importarlas y facilitar las pruebas sobre el proyecto, tambien se agradeceria el enviroment de ser posible para facilitar ajustes de puerto y demas. Espero lo tomen en cuenta para una configuracion mas rapida del proyecto inicial sobre todo para las personas que no tomaron el curso anterior.
Faker estaba arrojando algunos problemas, lo que hice fue actualizar a la ultima version
npm list @faker-js/faker
luego sustituir algunas lineas en el file llamado product.service.js
id: faker.string.uuid(),image: faker.image.url(),
Por otra parte como Nodemon ya no es seguro, sigo utilizando watch de node, por lo que el agregue al packgage.json node --watch index.js
Yo hice git pull en el terminal pero en insomnia no me aparecen los endpoints como al profe
Pudiste solucionarlo? Estoy con el mismo problema
Esos los tienes que crear tu, no se cargan automaticamente.
me gustaria un curso de nodejs con bases de datos relacionales sin ORM
ello no permite la separación del backend con la base de datos a utilizar
Adcionalmente tuve que cambiar el numero de puerto ya que me daba conflicto
Y con eso solucione el tema.
Por si seguian la clase y no despues del npm i al darle npm run dev no corria del todo bien
a mi me funciono darle npm audit fix
espero les funcione o sirva :D
Hola Profe Nicolás :
En el minuto 3:35 mencionas que si levanto el servidor, en Insomnia me aparecerán todos los endpoints así como sus
carpetas products, users y categorías.
Pero a mí no se me refleja esta actualización, me siguen apareciendo los endpoints del curso anterior de backend.
Que puedo hacer para solucionar lo anterior ?
Atte.
Aníbal
Hola, esto no es automático, es decir, apenas levantas el server ya están disponibles los endpoints, pero Insomnia no los detecta de forma automatica, ya que desde el curso anterior hemos ido creando el proyecto y agregado endpoints, si en tal caso quieres tal cual los que aparecen en la clase puedes descargar el archivo que está dentro del repo base e importarlo en tú Insomnia 🤓
Profe Nicolás :
Gracias por el apoyo
rápido y oportuno !
¡Saludos!
Atte.
Aníbal
No olviden que hoy en día es mejor usar esta extension de VS code, Thunder Client. Sirve igual que Postman y es un cliente API rest muy ligero y comprensible.
En este video se explica como instalarla y usarla: Ya no necesito usar Postman NUNCA MÁS !!
thunder ya no es gratis :p
Hola Nicolas, tengo un pequeño problema:
Antes la interfaz de Platzi nos mostraba los recursos de cada herramienta utilizada en Platzi, ahora no hay nada.
Entiendo que este problema es por la nueva GUI que están utilizando, pero me gustaría que puedan subir los recursos nuevamente para hacerlo más rápido.
Yo entiendo que se puede importar una lista de endpoints, SWAGGER saca un .sgv que se puede importar y tener todos los endpoints configurados. Si alguien lo pudiera compartir estaría maravilloso.
Hola, si SWAGGER es una gran herramienta para documetar APIS, pero si te sirve puedes descargar el archivo que está dentro del repo base e importarlo en tú Insomnia 🤓
Como se puede hacer, para que te aparezcan todos los endpoints del proyect, directamente en insomnia?
Hola, esto no es automático, es decir, apenas levantas el server ya están disponibles los endpoints, pero Insomnia no los detecta de forma automatica, ya que desde el curso anterior hemos ido creando el proyecto y agregado endpoints, si en tal caso quieres tal cual los que aparecen en la clase puedes descargar el archivo que está dentro del repo base e importarlo en tú Insomnia 🤓
¿cómo hacer para que aparezca en Insomnia los endpoints por defecto automáticamente? o lo haz creado antes?
Hola, esto no es automático, es decir, apenas levantas el server ya están disponibles los endpoints, pero Insomnia no los detecta de forma automatica, ya que desde el curso anterior hemos ido creando el proyecto y agregado endpoints, si en tal caso quieres tal cual los que aparecen en la clase puedes descargar el archivo que está dentro del repo base e importarlo en tú Insomnia 🤓