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

257
Views
¿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 answers
Answer question

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