¿Cómo iniciamos con el proyecto base que integra GradQL?
Empezamos nuestra jornada con un proyecto base que ya cuenta con una arquitectura y conecta a una base de datos empleando varias tecnologías esenciales. Este proyecto no solo utiliza una API REST, sino que también se le añadirá GradQL, permitiendo así la coexistencia de ambas arquitecturas. La metodología que veremos a continuación es fruto de un proceso de aprendizaje estructurado a través de varios cursos.
¿Cómo clonamos e instalamos el proyecto base?
Para comenzar, es vital descargar el proyecto desde el repositorio alojado en platzi/platzi.curso.nodejs.gradql. Esto puede hacerse de dos maneras:
Crear un fork y trabajar en un espacio personal: Esto te asegura que todas las contribuciones y modificaciones personales queden en tu propio espacio.
Clonar el repositorio directamente: Permitiendo trabajar sin realizar contribuciones personales al proyecto original.
Una vez elegida la opción deseada, dirígete a un espacio personal de tu computadora donde desees guardar el proyecto. Desde allí ejecuta el siguiente comando para clonar el proyecto:
git clone <URL_del_repositorio>
Luego de la clonación, entra a la carpeta del proyecto y procede a instalar las dependencias requeridas. Esto se realiza comúnmente con un gestor de paquetes como npm.
¿Cómo configuramos las variables de entorno?
Uno de los pasos cruciales en la configuración de cualquier proyecto es establecer las variables de entorno. Este proyecto previo exige que recursos como contraseñas y claves de API se definan en el archivo .env, que no se sube al repositorio por razones de seguridad. Para facilitar esta tarea, se ofrece un archivo de ejemplo .env.example que debes personalizar:
Crea un archivo .env y copia el contenido de .env.example.
El proyecto utiliza Docker para gestionar el entorno de la base de datos. Para poner en marcha el contenedor ejecuta:
docker-compose up -d postgres
Para verificar que Postgres está operativa, utiliza:
docker-composeps
¿Cómo ejecutamos las migraciones y poblamos la base de datos?
Para que la base de datos funcione correctamente, es necesario ejecutar las migraciones que crean la estructura de las tablas. Detén tu servidor de desarrollo y ejecuta las migraciones con:
npm run migrations:run
Para poblar la base de datos con datos iniciales, ejecuta:
npm run migrations:set:auth
Después de estos pasos, reinicia tu servidor de desarrollo para empezar a interactuar con la API.
¿Cómo exploramos la API REST y GradQL?
Una herramienta útil para interactuar con la API REST es Insomnia o Postman. Dentro del repositorio, encontrarás archivos como insomnia.json y postman.json, que facilitan esta tarea:
Importa estos archivos en Insomnia o Postman para acceder a las colecciones de endpoints ya configurados.
Realiza requests como GET /api/v1/users para probar el funcionamiento.
En el caso de endpoints protegidos, se requiere un access token. Esto se genera normalmente a través del login, por ejemplo:
POST /api/v1/auth/login
Una vez obtengas el token, utilízalo para acceder a endpoints seguros como GET /api/v1/categories.
Explorar este proyecto te permitirá entender su estructura y capacidad, fomentando la interacción y aprendizaje continuo en el desarrollo con GradQL. Al avanzar, profundizaremos en la organización del código, lo que facilitará su implementación práctica.
Para los que le sale el error:
"NODE_ENV" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
Solo deben instalar la dependencia:
npm install -g win-node-env
Buen aporte! Gracias
gracias, me funcionó
Para los que prefieran usar postman, aqui les comparto el archivo .json con las peticiones.
buen aporte , gracias
Hasta aquí llegué con este curso. Yo solo necesitaba aprender GraphQL en NodeJS y resulta que necesito saber más cosas. El curso debería llamarse Curso de GraphQL con NodeJs con Docker con Postgres.
De acuerdo, yo necesito únicamente aprender Graphql para unas actividades relacionadas con mi trabajo, sin embargo me doy cuenta de que para tomar el curso debo haber seguido la ruta de desarrollo web.
No tiene nada de sentido lo que dices.
Un curso solo de GraphQL con Node.js sin base de datos es imposible.
GraphQL es una tecnología de microservicios obviamente debes saber que es un microservicios que por definición cada uno debe tener su propia base de datos y puede ser cualquiera.
Un servicio de GraphQL sin base de datos es inútil, es como MySQL sin datos.
Creo que debes repasar otros conceptos antes No pasa nada con eso, al contrario.
Pero eso de entrar a un curso relacionado con microservicios sin saber que es microservicios no es culpa del curso, es tuya.
Con mucho gusto si necesitas ayuda para entender esto estoy en el Discord de platzi.
No está aun disponible el archivo de peticiones API para postman.
yo lo que hice fue manualmente crear el proyecto en postman para hacer las pruebas de la clase
Regreso luego de tomar 2 cursos previos, hasta más tarde :'v
y como lo hacemos si el proyecto del curso anterior no nos funciono? O para quienes no han hecho los cursos o que no saben docker? Creo que deberían haber hecho este curso con un proyecto desde cero. Perdí media tarde tratando de instalar docker en windows y no se como crear el servicio postgres para continuar con el curso...
Solucionado
Al poner el comando de docker-compose me arrojaba el siguiente error:
ERROR: open \.\pipe\docker_engine_linux:The system cannot find the file specified.
Y en general, para todos los comandos que intentara.
.
Si estan en win10 y estan recién instalando docker, no basta con solo instalar el ejecutable de Docker Desktop, porque muy probablemente se quedara en 'Docker starting'. En resumen, sigan esta guía al pie de la letra.
Totalmente cierto, no he podido pasar de este video
y donde esta el archivo de postman que no lo puedo encontrar en el repositorio ?
Al ejecutar migrations:run obtengo error de autenticación... Alguna idea ?
Al parecer la base de datos indica que las credenciales de acceso no son correctas, verifica que coincidan en tu archivo de .env y en el docker-compose.yml
Hace tiempo que deje de usar insomnia o postman y empece a usar una herramienta de terminal, se llama HTTPie:
https://httpie.io/
Una vez instalado, para hacer una petición GET y consultar los usuarios de la API ejecutas el comando:
http:3000/api/v1/users/
Deberían añadir un .npmrc para saber con qué versión de Node trabajar
Si al correr el server, tienen un error como el siguiente:
Deben actualizar la version de node, ya que la que tienen instalada no es compatible con esta sintaxis
Hola, muchichi@s, estoy haciendo este curso en 2025, me encontré con varios inconvenientes, en especial, con docker y postgres. Al intentar levantar el contenedor daba ok, pero cuando ejecutaba el comando "docker-compose ps" no listaba nada, como si no se hubiera levantado la instancia de docker. Para dar más info, estoy usando Win11 con el subsistema de linux-ubuntu 22; ya que estaba utilizando la terminal de linux en el visual, (culpa mía), me di cuenta que al correr el docker se crea una carpeta "local", pero esta parecía no tener permisos, según lo que decía el log de docker.
Lo que yo hice fue abrir una consola con permisos de administrador y ejecutar el comando para levantar postgres, seguía sin listar nada con el ps, pero psql -h 127.0.0.1 -p 5432 -U nico -d my_store valide si estaba correindo el postgres en ese puerto del localhost, y efectivamente si estaba corriendo. Luego, give la migración, todo ok, inserte los seeds, todo ok y al levantar el server, error de bycrypt :/ , lo que hice fue actualizar la librería a su última versión y listos, funcionó, una semana me demoré en esto mi gente, no me funen, pero no me dejé morir.
me he superado, el gear 6 y chatGPT
jajaja
Hola! Alguien tiene la colección de postman creado que la quiera compartir?
No consigo importar el archivo insomnia.json en insomnia, alguien me ayuda??
Ya pudiste realizarlo? yo tengo el mismo problema
para importar el archivo de insomia.json, abren insomia en la parte inferior izquierda,van a preferences > Data > import , y arrastran el archivo.
Yo no había usado insomnia antes y me costó un poco encontrar como exportar el archivo.
Debajo del menu principal, centrado esta como una estructura que se ve así
insomia /newdocument
dandole click en new document, da la opción de exportar
en windows, tengo problema con la autenticacion para el user "postgres" la url la contraseña no funciona o no es alguien sabe ?
Cuando ejecuto las migraciones me sale este error: ERROR: role "nico" does not exist
he estado buscando pero no encuentro solucion, a alguien mas le pasa?
el archivo postman.json no me sale, me pueden indicar en que lugar se encuentra?
Alguien sabe que emulador de terminal está utilizando el profe? me encanta que la ruta aparezca arriba, y justo debajo enlazado con una flecha el prompt 🤩
el profe esta usando una terminal wsl (windows subsystem for linux) pero en vez de bash, que es la terminal normal por defecto, el profe configuro una terminal zsh, en el curso de terminal al final puedes encontrar como hacer eso :)