Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

192
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda