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

182
Vistas
¿Cómo enviar una variable (mongodb doc id) de una función asíncrona a otra función asíncrona en javascript?

Tengo dos funciones asíncronas, que son la async function start(){} y async function end(){} Entonces en ambas funciones tengo operaciones mongodb. Quiero enviar la identificación del documento generada dentro de la función start() a la función end() y luego registrarla allí. Esta es mi función de inicio:

 async function start() { await client.connect(); const db = client.db(dbName); const col = db.collection("mongotroncol"); let personDocument = { "name" : "shubham" } // Insert a single document, wait for promise so we can read it back const p = await col.insertOne(personDocument); const abc = p.insertedId; const docid = abc.toString() return docid; }

y luego tengo esta función end() y estoy tratando de enviar un docid único generado en la función start() a la función end() con la devolución de ese valor y registrarlo en la función end() de la siguiente manera:

 async function end() { mongoid = await start(); console.log(mongoid); }

Entonces, por ejemplo, "623cb515366c70a2a3c27288", esta es la identificación de mi documento generada en la función de inicio (), entonces lo que deseo es consolar. Registrar esta misma identificación en la función de finalización (), pero mientras escribo, await start() en la función de finalización (), nuevamente se llama y ejecuta la función start (), resultado del cual se genera una nueva identificación del documento mongodb y se registra una nueva, pero quiero que la identificación del documento se genere solo desde el inicio ().

Un punto importante: tengo dos eventos que son app.on('ready') y app.on('quit'), así que llamo await start() y await end() respectivamente así:

 app.on('ready', () => { await start(); });

y

 app.on('quit', () => { await end(); });

Entonces, mi primer clic en el botón activará el evento app.on('ready') que ejecutará la función de inicio asincrónico () y generará un documento mongodb con docid único y luego en mi segundo clic en el botón (que haré después de algunos minutos) lo hará trigger app.on('quit') que ejecutará la función asíncrona end() e idealmente quiero que se genere el mismo docid en la función asíncrona start() pero obtengo "623cb515366c70a2a3c27289", que es exactamente un bit incrementado que el generado en start () función [consulte el valor de id mencionado en el párrafo anterior] Entonces, la preocupación es obtener el mismo docid. ¡¡Gracias!!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Entonces, después de una pequeña lluvia de ideas, probé un enfoque y funcionó.

  • Declaré una variable global como let doc_id = "";

  • Luego, en la función start() , acabo de asignar un valor a doc_id de esta manera:

     async function start() { await client.connect(); const db = client.db(dbName); const col = db.collection("mongotroncol"); let personDocument = { "name" : "shubham" } const p = await col.insertOne(personDocument); doc_id = p.insertedId.toString();

    }

  • Y ahora al momento de llamar a la función end() hice esto:

 app.on('quit', () => { await end(doc_id); });
  • Y finalmente pasó esta identificación como parámetro a la función:
 async function end(doc_id) { console.log(doc-id); }
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