No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Proyecto de API

16/27
Recursos

Aportes 20

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Momento donde uno se da cuenta que sabe poco con todo lo que existen en el entorno tecnologico, tambien que no se que estoy haciendo .

Comencé el curso por error ya que pensaba era testing en JS como front-end, seguramente fallo mio por no leer o no prestar atención. No entendia nada y me salieron un montón de errores, finalmente pude crear la BD y correr la ap en el local host, eso si tarde casi 2 días en darme cuenta que el código no es JS plain sino Express pero pude hacerlo, con lo cual bajo mi frustración. …Nicolas me parece un excelente profesor. Ya q llegué aqui terminaré el curso.

Si la consola te lanza un error como este:

ERROR: for mongo  Cannot start service mongo: driver failed programming external connectivity on endpoint api_mongo_1 Error starting userland proxy: listen tcp4 0.0.0.0:27017: bind: address already in use
ERROR: Encountered errors while bringing up the project
  • La solucion esta facil, solo debes ejecutar los siguientes comandos:
    (Si no tienes instalado netstat en Ubuntu):
sudo apt install net-tools   
  • Luego corres el siguiente comando:
sudo lsof -i -P -n | grep 27017
  • Y por ultimo corres el siguiente comando:
sudo kill <process ID> 

(El process Id es el numero a la par “process name” de lo que te devolvio el comando que comienza con lsof), mi caso era el 1242. Ejem:

mongod     1242         mongodb   11u  IPv4 

y listo! Luego solo corre el docker-compose up -d mongo y deberia funcionar

Preparamos el setup del proyecto para empezar a realizar pruebas unitarias.

  1. Vamos al repositorio del curso

  2. Copiamos los archivos de examples/api (clonamos o descargamos), y los pegamos en nuestro proyecto.

  3. Ya en la terminal, vamos a la carpeta testing-js/api e instalamos las dependencias.

    • El proyecto es una API en express que se conecta a una base de datos en Mongo.
    • Tiene dependencias de desarrollo (jest - nodemon - eslint) y producción (express - mongodb - dotenv - cors).
  4. Creamos un archivo .env y lo completamos en base al .env.example

    • MONGO_DB_NAME : Nombre de la base de datos
    • MONGO_URL : Url de la base de datos, para este curso la correremos en local.
  5. Para levantar la base de datos usaremos Docker con la configuración en docker-compose.yml

    • También se puede usar un Mongo Atlas en su lugar.
    • O también en case de tener mongo instalado en local
    • Este archivo también contiene el username y password.
  6. Levantamos Mongo con Docker usando:

    docker-compose up -d mongo # El nombre mongo viene del archivo docker-compose.yml
    
    # Para comprobar que esta corriendo usamos
    docker-compose ps
    
    # Para bajar el servicio usamos
    docker-compose down
    
  7. Usamos la interfaz grafica de Mongo Compass para explora la base de datos.

    • Nos conectamos a la base de datos que tenemos corriendo en local con Docker. Utilizando la url que tenemos en el archivo .env.
    • Creamos la base de datos demo y una coleccion books.
    • Agregamos data: libros.
  8. Inicializamos nuestra aplicación:

    npm run start
    
  9. Vamos al puerto donde corre nuestra aplicación: localhost:3000

    • Y podemos acceder a los libros en: localhost:3000/api/v1/books

¡Hola!
Quizás te sientas un poco perdido en esta clase, en caso que no, mira el siguiente comentario.

Bueno, ya, quiero contarte que el uso de docker, librerias externas, uso de la librería de Mongo podría ser un poco desgastante de aprender en tan solo una clase, a lo que desde mi perspectiva, si no quieres sentirte tan perdido/a, te recomendaría que siguieras de principio a fin, sin omitir cursos, la ruta de
Backend con node.js, ¡Pero no solo acaba ahí! También te recomiendo el curso de Prework en windows o puedes buscar también el de linux o Mac, también tomar el curso de terminal y también el curso de Docker (Este está un poquito desactualizado pero googleando logras terminar el curso y aprender un montón), después de muchos estrellones que llegué a tener, que no entendía muchas cosas, puedo decir que al menos me funciona el ambiente 😅, no te desanimes, las cosas buenas nunca son fáciles.

2023 y todo jaló bien, nomas que tuve que actualizar mi versión de Home a Pro para hacer este curso. jaja

Si alguien tuvo mas tuvo problemas con la autenticación de la base de datos, solo cambien la URL en el .env y en MongoAtlas por mongodb://localhost:27017/demo Con esto queda corregido y funciona sin ningún problema

Si les sale este error:

TypeError: Cannot read properties of undefined (reading 'startsWith')

Muevan el archivo de las variables de entorno (.env) a la raíz de la carpeta api. Corran el programa nuevamente y debería funcionar.

A ver si entendí: clonamos el repo al entorno local, instalamos las dependencias especificadas en el package.json con ‘npm i’, levantamos un contenedor de docker-compose con la imagen de mongo:4.4 tal como dice en el archivo docker-compose.yml, en este archivo se especifican las credenciales root y root123 para posteriormente instalar MongoDB Compass y decirle que se conecte a ese contenedor por medio del puerto 27017 de la máquina local que está unido al puerto 27017 del contenedor. Después usamos ‘npm start’ para correr la API de Express en localhost y escuchar peticiones http por el puerto 27017 de la máquina local. Right?

Buenas noches llegue hasta este punto que se observa la imagen pero no entiendo como realizar lo de MongoDB. Me podrian ayudar por favor.![](https://static.platzi.com/media/user_upload/TEST-fdb97481-90f0-4622-9bef-fd8b281a4484.jpg)

en mi caso tenia un error, y es por que instale un plugin y en vez de escribir docker-compose es docker compose

Otra forma de hacer este paso sin docker es creando una cuenta en https://www.mongodb.com/cloud/atlas/register
y creando un nuevo cluster shared que es gratuito.
Así no es necesario correr una instancia de docker que en computadores mac por ejemplo, consume mucha memoria ram.

https://download-directory.github.io/

sitio para descargar una carpeta de github

Paquetes necesarios si usas Arch Linux

1. docker-compose

sudo pacman -S docker-compose

2.mongodb-compass

yay -S mongodb-compass

Nota: Si no tienes yay, busca un tutorial de instalación o hazlo mediante el método tradicional

cd ~/Downloads
git clone https://aur.archlinux.org/mongodb-compass.git
cd mongodb-compass
makepkg -si

Todo esto no me dio problemas usando Ubuntu 😄

Solucion problema Autenticacion mongo compass

archivo docker-compose:

services:
mongo:
image: mongo:4.4
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root123
ports:
- 3000:27017

En esta nueva configuración, el puerto 3000 del host será mapeado al puerto 27017 del contenedor de MongoDB. Esto significa que cualquier cliente que se conecte al puerto 3000 de la dirección IP del host será redirigido al puerto 27017 del contenedor de MongoDB.

Recuerda que es importante que el puerto que especifiques en el host no esté ya en uso por otro servicio o aplicación para evitar conflictos.

el archivo .env quedaria:

MONGO_DB_NAME=demo
MONGO_URL=mongodb://root:root123@localhost:3000?retryWrites=true&writeConcern=majority

y se usa es string para conectarte en mongocompass.

error during connect… eso me salio al ejecutar el comando

<docker-compose -d mongo> 

Cuando el pone up -d es por que es un alias de docker-compose up

por si se confunden y escriben down o up y no les funciona.

asi que para que les funcione tienen que escribir completo el docker-compose up -d para correr la instancia de docker o docker-compose down para apagar la instancia.

un alias es una manera de correr un comando largo con menos palabras.

En Windows, si tienen este error:

$ docker-compose up -d mongo
[+] Running 0/0

  • Container api-mongo-1 Starting 0.0s
    Error response from daemon: network api_default not found

Escriban el siguiente comando: (sin el $)
$ docker network create api_default

y luego procedan con el comando:
$ docker-compose up -d mongo

En mi caso preferí crear la base de datos en la nube de MongoDb, se llama Atlas y es relativamente fácil configurarla, les dejo el enlace: MongDbAtlas