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

491
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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