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

258
Visualizações
¿Cómo hago que una función espere hasta que se establezca una conexión con la base de datos antes de continuar?

Probablemente mal redactado, entiendo asíncrono/promesas/devoluciones de llamada.

Lo que intento hacer es crear un módulo que pueda ser necesario ( database.js de datos.js), al que luego puedo llamar a métodos como database.insert() y database.read() .

Así que aquí está mi código:

 require('dotenv').config() const {MongoClient} = require('mongodb'); const client = new MongoClient(process.env.MONGO_URI); var db, queue; client.connect().then(e => { console.log('connected to database'); db = client.db('filemanager'); queue = db.collection('queue'); }); function insert (data, cb) { queue.insertOne(data) .then(res => {cb()}) } module.exports = { insert: insert, }

La pregunta es: ¿Cómo hago para que cuando se llame a database.insert() , se procesará instantáneamente si db y queue ya están definidos, pero si no lo están, esperará hasta que lo estén, luego continuará procesando como de costumbre? ?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede asignar el resultado de una promesa a una variable y puede llamarla más then . Por ejemplo:

 const queuePromise = client.connect().then(e => { console.log('connected to database'); const db = client.db('filemanager'); const queue = db.collection('queue'); return queue; });

Ahora tiene una variable llamada queuePromise que es una promesa que se resuelve en un objeto db.collection . Entonces puedes usar esa promesa así

 queuePromise.then((queue) => { // do something with the queue });

Entonces puedes tener una función como esta

 const insert = (data, callback) => { queuePromise.then((queue) => { queue.insertOne(data).then(callback); }); };

O incluso mejor, no use el patrón de devolución de llamada y siga así

 const insert = (data) => { return queuePromise.then((queue) => { return queue.insertOne(data); }); }; // use the callback in a `then` after calling `insert` insert(data).then(callback);
over 4 years ago · Santiago Trujillo 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