Proyecto de API
Clase 16 de 27 • Curso de Introducción al Testing con JavaScript
Contenido del curso
Clase 16 de 27 • Curso de Introducción al Testing con JavaScript
Contenido del curso
Bryan David Castañeda Aranzales
Diego Vergara
Jorge Mario Martinez Martinez
Franklin Reyes
Irving Juárez
Sebastian Vásquez Valencia
Julio Cesar Fuentes Alvarado
Nayarith Jiménez
Angel Hernandez
Victoriano Emilio Juárez Tacam
Jonh Pertuz pertuz
Uriel Mojica Mejía
Daniel Andres Rojas Paredes
Christian Boffill
Xavier Medina Veintimilla
Christian Boffill
Alvaro Eduardo Garzón Pira
Andrés Felipe Cubillos Ospina
Jose Gabriel Argüello
Miguel Angel Reyes Moreno
Cesar Enrique Velasquez Galvis
Rubén Ernesto Aragón Gil
Miguel Angel Hernandez Colombo
Rubén Ernesto Aragón Gil
Wilson Bienvenido Otaño Mateo
Daniel Andres Rojas Paredes
Daniel Andres Rojas Paredes
Carlos Vera
Walter Lensinas
Carlos Vera
Juan Daniel Hernández Urrego
Renzo Tincopa Barreto
Jose Gabriel Argüello
jesus manuel vergara arias
jesus manuel vergara arias
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 .
Te recomiendo empiezas a tomar la ruta de backend con node, yo hace unos cursos atras hice un alto para aprender todas esas cosas básicas, entre ellas docker.
animo! o de pronto debes tomar otra ruta de pruebas.
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.
Ver un curso de node y despues backend con express te ayudara bastante y aunque tardes mas en terminar este curso, lo vas a entender mejor
Hola buenas noches, me podrias ayudar? Me paso igual, estoy realizando este curso pensando que iba enfocado para FrontEnd, pero me gustaria terminarlo. Hasta el momento todo me ha funcionado pero nose como hacer el paso en Mongo-DB. Voy en este punto .
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.
Gracias por el dato, fue de ayuda :D
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
sudo apt install net-tools
sudo lsof -i -P -n | grep 27017
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
El puerto esta siendo utilizado (activo), practicamente no va a funcionar.
En el archivo docker-compose.yml, cambiar el puerto de conexion.
version: '3.3' services: mongo: image: mongo:4.4 environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: root123 ports: - 27019:27017 # cambio de puerto de 27017 a 27019
Para mongoDBCompas, modifica la url del archivo .env MONGO_URL=mongodb://root:root123@localhost:27019?retryWrites=true&writeConcern=majority
crea tu database demo.book en MongoDBCompass
Cambiar el puerto como dijo el compañero victoriano
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
entonces si estaban tan perdidos como yo despues de ver esta clase aca un glosario que les puede ayudar:
-Express: es como pizza de microondas para montar servidores y rest apis
-Docker compose: paquete/funcionalidad de docker que permite atravez de un archivo. yaml (un archivo de configuracion) crear un comando que al correrlo nos permitira crear varios dockers con su respectiva network
-MongoDB: sistema de bases de datos con objetos en formato json,con una escalabilidad superior
-mongo Atlas: interfaz para el manejo de bases de datos de mongo
-node Demon: un switch que le hace restart al servidor cada que detecta un cambio en sus archivos
-dependecia: son archivos extra que son necesarios para el desarrollo de proyecto, como las escaleras andamios o gruas en la construccion de un edificio
-corse: una dependencia que permite que el servidor y el frontend corran en dominios diferentes y aun se puedan comunicar sin que nos salga error de cross origin
-.env: dependencia paa el manejo de variables glovales que pueden variar entre el entorno de desarrollo y el de produccion , como la API key (por eso debe estar en el (git ignore, si lo subes al repositorio es como regalar las llaves de tu casa a un extraño solo por que querias mostrarle fotos de la misma)
¿Cómo puedo seguir este curso si no puedo usar Docker y Mongo?
¡Hola! :D
¿Cuál es el problema que tienes con Docker y Mongo?, ¿en qué te puedo ayudar?
no puedo usar Docker y Mongo ni con vpn
¡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.
Muchachos para entender un poco 💁
Docker es una plataforma de software que permite crear, gestionar y ejecutar aplicaciones en contenedores. Los contenedores son entornos de ejecución ligeros y portátiles que incluyen todo lo necesario para ejecutar una aplicación, como el código, las dependencias, las bibliotecas y los archivos de configuración. A diferencia de las máquinas virtuales, los contenedores comparten el sistema operativo del host, lo que los hace más eficientes y rápidos.
¿Qué hace Docker?
docker-compose.yml) y ejecutar todos los servicios necesarios para una aplicación de manera conjunta. Esto es útil cuando trabajas con aplicaciones que tienen varios componentes (por ejemplo, una aplicación web con una base de datos)MongoDB es una base de datos NoSQL orientada a documentos, diseñada para almacenar grandes cantidades de datos de forma eficiente y escalable. En lugar de utilizar tablas y filas como en las bases de datos relacionales (como MySQL o PostgreSQL), MongoDB almacena los datos en documentos JSON (o BSON, su formato binario), lo que lo hace muy flexible para manejar datos no estructurados o semi-estructurados.
en mi caso me indicaba un error :
node_modules/mongodb-connection-string-url/lib/index.js:9 return (connectionString.startsWith('mongodb://') || ^ TypeError: Cannot read properties of undefined (reading 'startsWith')
y comprendí que por alguna razón mo me tomaba los valores del .env ) por tanto para resolver rápido en el archivo: src/config/index.js lo modifique para que tome el valor por defecto:
dbUrl: process.env.MONGO_URL || 'mongodb://root:root123@localhost:27017?retryWrites=true&writeConcern=majority',
si bien esto no debe ser usado de forma productiva así, para los fines del curso ( testing) resuelve el problema
Todo esto no me dio problemas usando Ubuntu :D
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?
2023 y todo jaló bien, nomas que tuve que actualizar mi versión de Home a Pro para hacer este curso. jaja
quizas por eso no me funciona a mi
Puede ser una alternativa, bro.
si te da algún error sobre que el puerto 3000 esta ocupado, solo tienen que cambiar el puerto en el archivo /src/config/index
const config = { env: process.env.NODE_ENV || 'dev', isProd: process.env.NODE_ENV === 'production', port: process.env.PORT || 3000, dbUrl: process.env.MONGO_URL, dbName: process.env.MONGO_DB_NAME, }; ```solo necesita cambiar el 3000 por otra cosa
¿a alguien mas le pasa que cuando intenta entrar al puerto 3000 desde el navegador , le sale this site can 't be reach? no se porque mi api no aparece en este puerto? como puedo solucionarlo?
si stoy usando Wsl con windows 10 mongo db y mongo compass los deberia installar en windows y luego intentarme conectar desde wsl o como? porque ya llevo un buen rato intentando instalarlo desde la consola de wsl usando los comandos de linux que aparecen en la documentacion pero no parece funcionar.
al momento de ejecutar el comando docker-compose up -d mongo
me suelta este error
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
Si alguien sabe como arreglarlo se lo agradecería mucho
Hola Carlos, que sistema operativo tienes?
Realiza un reset del servicio de docker por las dudas.
Luego probamos lo siguiente en una terminal docker --version y docker-compose --version y pegalo aquí.
buenas, al final logré solventar ese error, era debido a que no había agregado un usuario a la configuración, y tras haberlo arreglado pude continuar, pero gracias igualmente
buenas tardes, la autenticación de mongo falló y no he podido reconectarla, ¿algún consejo?
Hola.
¿Podrías compartirnos unas imágenes de lo que está sucediendo para tener más contexto y poder ayudarte, por favor?
💚
juan buenos tardes, se me ocurre que si la autenticacion te fallo puede deberse ( como a mi ) a un fallo de lectura del archivo .env y por tanto no toma las variables de ambiente ( asumo que verificaste con docker ps que el contenedor e de mongo esta levantado y corriendo), por tanto para resolverlo podes "hardcodear" los valores en el archivo src/config/index.js con los mismos valores dados en el .env , asi se resolverá, no es solución para usar en producción, pero si es para un curso de testing te resolverá el problema , saludos!
Si funciona.....
Gracias al curso de docker pude entender todo lo que hablaba el profe: