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. 鈥icolas 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 鈥減rocess 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 鈥榥pm 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 鈥榥pm 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