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

489
Views
Cuando obtengo datos de Firebase y los registro, devuelve el archivo del documento, pero cuando los envío, devuelve una promesa.

He estado trabajando con firebase y tengo problemas con este código.

El objetivo del código es obtener los datos del documento con la identificación del documento.

 const getPostData = async (postId) => { const postData = await getDoc(doc(db, 'posts', postId)); console.log(postData.data()); // Returns the document data return postData.data(); } const postData = getPostData(id); console.log(postData) // Returns a promise

Estoy extremadamente confundido porque devuelvo los datos del documento que, cuando registro, me dan los datos reales del documento, pero cuando los configuro como una variable, no hacen lo mismo.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Cuando usa una función como async , devuelve una Promise automáticamente. Así que el problema está en la lógica.

Lo que sucede:

  • Llamas a getPostData

  • Es una función async , por lo que su retorno es Promise .

  • El alcance más grande no es un alcance async , por lo que console.log se ejecuta justo después, sin esperar la ejecución de lo que está dentro de getPostData

  • console.log devuelve una Promise

Prueba algo como:

 const [postData, setPostData]= useState() const getPostData = async (postId) => { const postData = await getDoc(doc(db, 'posts', postId)); if (postData.exists()) { console.log(postData.data()); // Returns the document data setPostData(postData.data()); } else { console.log("No posts!"); } } ... getPostData(id); ... console.log(postData)
about 4 years ago · Juan Pablo Isaza Report

0

Dado que ha marcado getPostData como async , devuelve una Promise y no un valor inmediato.

Para obtener el valor de la promesa al llamar a getPostData , puede usar then() :

 getPostData(id).then((postData) => { console.log(postData) })

O puede usar await :

 const postData = await getPostData(id); console.log(postData)
about 4 years ago · Juan Pablo Isaza 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!