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

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

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 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