Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

191
Views
¿Cómo conectarse a un MongoDB de forma asíncrona?

Tengo una base de datos MongoDB. Estoy usando Javascript y Node.js (usando Mangoose) para acceder a esta base de datos. Necesito devolver una matriz con el nombre de todas las colecciones en la base de datos. Así que uso un código que sigue.

 let connection = mongoose.createConnection(process.env.MONGODB_URI + "/" + dbname); // Wait 10 seconds for Mongoose to establish the connection. await new Promise(r => setTimeout(r, 10000)); return connection.db.collections() .then(stations=>stations.map(stations=>stations.collectionName)) .catch(reason => { console.error("Error : "+reason); return null; });

El código anterior funciona correctamente. Ahora, estoy tratando de hacer el mismo proceso de forma asíncrona. Para esto, estoy usando el siguiente código.

 async function station_list_all(dbname){ return new Promise((resolve,reject) => { try { let connection = mongoose.createConnection(process.env.MONGODB_URI + "/" + dbname); resolve(connection); }catch(err){ reject(new Error("DB not found!")); } }) .then(connection => connection.db) .then(db => db.collections()) .then(stations=>stations.map(station=>station.collectionName)) .catch(err => { console.error("Error : "+err); return null; }); }

Desafortunadamente, en lugar de los nombres de las colecciones, aparece el mensaje: Error : TypeError: Cannot read property 'collections' of undefined.

Creo que db regresa indefinido, pero... ¿No debería esperar el código hasta que db tenga un valor válido?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Prueba con async await:

 try { await mongoose.connect('mongo url with db name'); // other process } catch (error) { handleError(error); }

O puede conectarse usando la devolución de llamada:

 try { mongoose.connect('mongo url with db name').then(()=>{ // other process }); } catch (error) { handleError(error); }

De la misma manera, también puedes probar con la promesa. No es necesario usar settimeout.

Para obtener más información, visite: Mongoose Connections

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!