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

126
Vistas
Usar async cuando se deben realizar dos solicitudes y se necesita la respuesta de la primera en la otra solicitud

Tengo una función asíncrona como esta:

 exports.myFunction = async (req, res, next) => { if (some condition) { next() } try { const results = await axios.get(`https://a-domain.com/url/path`); const info = results.data; const docRef = await addDoc(collection(db, "name_of_collec"), info); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); } next(); };

Aquí, la respuesta de la primera solicitud se requiere en la segunda solicitud. Pero según mi conocimiento, dado que estoy realizando solicitudes asincrónicas, las dos solicitudes deben realizarse al mismo tiempo.

Lo que no puedo entender:

  • Entonces, ¿cómo es posible que no ocurra ningún error?
  • ¿Cómo es que, a veces, no se agrega ningún documento a Firestore? Como si se saltara de alguna manera...
  • ¿Qué modificación se puede hacer para que await addDoc(collection(db, "name_of_collec") se ejecute obligatoriamente?

Información de contexto:

  • Estoy usando Express.js y Node.js para hacer un backend
  • Estoy usando Axios para hacer la primera solicitud y la segunda es agregar un documento a Firestore.
  • Firestore es una base de datos NoSQL dentro de Firebase de Google.
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Pero según mi conocimiento, dado que estoy realizando solicitudes asincrónicas, las dos solicitudes deben realizarse al mismo tiempo.

asynchronous no significa que las solicitudes se realicen al mismo tiempo. Significa que el código no esperará las respuestas de estas solicitudes. Las solicitudes se realizan de la manera en que las agrega en el código y las respuestas serán asincrónicas, es decir, la respuesta se recibirá en algún momento en el futuro.

Y no hay garantía de qué manera serán recibidos.

Sin embargo, cuando demanda a async/await , la ejecución del código espera a la palabra clave await para obtener la respuesta en función de su éxito o falla, llama al siguiente flujo. No es más que azúcar sintáctico sobre promesas. Bajo el capó, así es como se ejecutará su código:

 exports.myFunction = async (req, res, next) => { if (some condition) { next()l } axios.get(`https://a-domain.com/url/path`).then(result => result).then(data => { const info = data; addDoc(collection(db, "name_of_collec"), info).then(response => { console.log("Document written with ID: ", docRef.id); }).catch(e => { console.error(e); }) }).catch(e => { console.error(e); }) next(); };

Entonces, ¿cómo es posible que no ocurra ningún error?

No es necesario que el error se produzca cuando lo solicites. Si ese es el caso, se debe activar el manejador de capturas.

¿Cómo es que, a veces, no se agrega ningún documento a Firestore? Como si se saltara de alguna manera...

El motivo podría ser que la info es un objeto vacío y firestore elimina automáticamente el documento vacío.

No hay problema, pero no hay info de datos que esté vacía a veces que omita la adición (solicita firestore, pero firestore elimina los documentos vacíos)

 exports.myFunction = async (req, res, next) => { if (some condition) { next() } try { const results = await axios.get(`https://a-domain.com/url/path`); const info = results.data; const is_Info_Data = Array.isArray(info) ? info?.length >= 1: Object.keys(info) !== 0 if (is_Info_Data) { const docRef = await addDoc(collection(db, "name_of_collec"), info); console.log("Document written with ID: ", docRef.id); } else { console.log(`Info is empty ${info} no addition to DB`); } next(); } catch (e) { console.error("Error adding document: ", e); next(e); } };
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