La verdad no pude con la conexión a mongo Atlas, intente con compass y genera un timeout pero este problema lo vengo arrastrando desde ...

Felipe Carrión

Felipe Carrión

Pregunta
studenthace 5 años

La verdad no pude con la conexión a mongo Atlas, intente con compass y genera un timeout pero este problema lo vengo arrastrando desde el curso de nodeJs, asi que decidí continuar con la base de datos local.

Dejo mi error por si alguien sabe a que se debe mi error es el siguiente:

MongoError: MongoClient must be connected before calling MongoClient.prototype.db at MongoClient.db (C:\Users\CarriCas\Documents\Platzi\Express\node_modules\mongodb\lib\mongo_client.js:313:11) at C:\Users\CarriCas\Documents\Platzi\Express\lib\mongo.js:27:29 at C:\Users\CarriCas\Documents\Platzi\Express\node_modules\mongodb\lib\utils.js:722:9 at C:\Users\CarriCas\Documents\Platzi\Express\node_modules\mongodb\lib\mongo_client.js:223:23 at C:\Users\CarriCas\Documents\Platzi\Express\node_modules\mongodb\lib\operations\connect.js:279:21 at QueryReqWrap.callback (C:\Users\CarriCas\Documents\Platzi\Express\node_modules\mongodb\lib\core\uri_parser.js:86:18) at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:10)

Intente solucionarlo con las siguientes url pero no tuve exito:

const MONGO_URI = `mongodb://${USER}:${PASSWORD}@${config.dbHost}:${config.dbPort}/?authSource=${DB_NAME}`; // prettier-ignore
mongodb+srv://${USER}:${PASSWORD}@${config.dbHost}/${DB_NAME}?retryWrites=true&w=majority
5 respuestas
para escribir tu comentario
    Luis Lira

    Luis Lira

    studenthace 5 años

    Si las conexiones te las está rechazando también en Compass debería revisar la pestaña de "Network Access" en Mongo Atlas, ahí es donde configuras desde qué IP se pueden conectar. Si la dejas como

    0.0.0.0/0
    incluye todas las IP, si no quieres eso, tendrías que darle en "Current IP" aunque si reinicias tu router esta IP podría estar cambiando y tendría que configurarla de nuevo.

    Fer Torres

    Fer Torres

    studenthace 5 años

    Hola. ¿Tienes tu código en algún lugar que podamos revisar? Mientras tanto, te comparto mi código, que fue sin usar el puerto. Avísannos si funcionó y en qué más te podemos ayudar.

    const { MongoClient, ObjectId } = require("mongodb"); const { config } = require("../config"); const USER = encodeURIComponent(config.dbUser); const PASSWORD = encodeURIComponent(config.dbPassword); const DB_NAME = config.dbName; // Line from the course: // const MONGO_URI = `mongodb://${USER}:${PASSWORD}@${config.dbHost}:${config.dbPort}/?authSource=${DB_NAME}`; // Line that actually works: const MONGO_URI = `mongodb+srv://${USER}:${PASSWORD}@${config.dbHost}/${DB_NAME}?retryWrites=true&w=majority`;
    Felipe Carrión

    Felipe Carrión

    studenthace 5 años

    Muchas gracias compañeros por contestar, voy a intentar revisar las variables de entorno, porque las demás opciones ya las he probado...el problema también va a a que mi conexión es rechazada desde mongo compass y tambien desde la terminal.

    Luis Lira

    Luis Lira

    studenthace 5 años

    Hola!

    Yo escribe la conexión de Mongo de esta manera

    const MONGO_URI = `mongodb+srv://${USER}:${PASSWORD}@${DB_HOST}/${DB_NAME}?retryWrites=true&w=majority`

    Aunque si tienes error podría deberse a varias casos.

    • Asegúrate que tus variables de entorno se carguen correctamente
    • Revisa las credenciales que estás poniendo de Mongo Atlas
    • Revisar que tu Mongo Atlas acepte conexión de todos los orígenes o desde tu IP
    Carlos Valdez

    Carlos Valdez

    studenthace 5 años

    Declarala de la siguiente manera.

    const MONGO_URI = `mongodb+srv://${USER}:${PASSWORD}@${config.dbHost}/${DB_NAME}`;
Curso de Express.js

Curso de Express.js

Crea una aplicación web desde cero con Express.js, uno de los frameworks más populares de JavaScript. Genera tu web app de forma fácil y rápida gracias a sus plugins de alto rendimiento y despliega toda tu creatividad en el desarrollo de tus aplicaciones con Express.

Curso de Express.js
Curso de Express.js

Curso de Express.js

Crea una aplicación web desde cero con Express.js, uno de los frameworks más populares de JavaScript. Genera tu web app de forma fácil y rápida gracias a sus plugins de alto rendimiento y despliega toda tu creatividad en el desarrollo de tus aplicaciones con Express.