Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda