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

99
Vistas
Nodejs async/await no funciona como se esperaba

Tengo una API express que lee mi base de datos de fauna. Tengo una configuración de clase llamada Base de datos que maneja todas mis consultas de fauna y un método asíncrono llamado getQuotes que esencialmente obtiene un documento de fauna, la estructura general es así:

 async getQuotes() { // note, `query` is an async function const doc = this.client.query(...).then((res) => { const data = ...; // to keep this short I'm not gonna show this console.log("faunadb handler: " + data); // just for debug return Promise.resolve(data); }) }

Luego, cuando inicio la API express, hago que llame al método getQuotes y registre los datos (solo para la depuración).

 const quotes = db.getQuotes().then((quotes) => { console.log("fauna consumer: " + quotes); })

Ahora, cuando ejecuto la aplicación, obtengo el siguiente resultado:

 starting server on port.... ussual stuff fauna consumer: undefined faunadb handler: { ... }

El código de consumidor de fauna se ejecuta antes de que obtengamos la promesa de la API de consulta de fauna. Necesito usar .then porque el nodo, por alguna razón, no me permite usar await. Alguien sabe cómo resolver esto? ¡Gracias! (usando la versión de nodo v16.14.0 , ejecutándose en Arch Linux )

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

0

No está devolviendo nada de su función getQuotes() . El retorno en su devolución de llamada solo regresará desde la devolución de llamada, no desde la función adjunta. Tampoco está esperando en ningún lado, lo que significa que su función asíncrona no esperará el resultado de su consulta.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Desde mi perspectiva, es mejor no confundir await y then . O usa uno u otro.
Recomendaría ir con await .

 async getQuotes() { // note, `query` is an async function const res = await this.client.query(...) const doc = ...; // to keep this short I'm not gonna show this console.log("faunadb handler: " + doc); // just for debug return doc; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

intenta usar await

 async getQuotes() { const res = await this.client.query(...); const data = ...; console.log("faunadb handler: " + data); // just for debug return data; }
 // must be in async function const quotes = await db.getQuotes(); console.log("fauna consumer: " + quotes);
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