const loadData = async () => { try { const data = await GetAllForms(); setAllForms([...data]); } catch (err) { console.log(err); } } Mis datos variables reciben los datos de GetAllForms (esa es una función de promesa), pero cuando intento asignar a otra variable está vacío, en este registro de la consola, por ejemplo, muestra una matriz vacía. Pero si solo tengo un archivo console.log console.log(data) los datos aparecen correctamente, el problema es solo con el dataAux . No tengo ni idea de lo que está pasando aquí. ¡Gracias!
Aquí el GetAllForms
export async function GetAllForms() { const formRef = await dbForms.collection("forms"); const snapshot = await formRef.get(); const dataFormattedArray = [] as IFormsFormatted[]; snapshot.forEach(async doc => { const docData = doc.data() as IForms const aux = [] as FormsData[]; for (const id of docData.formsFieldId) { const test = await GetOneFormsField(id); aux.push(test); } const dataFormatted = { ...docData, formsFieldId: [...aux] } dataFormattedArray.push(dataFormatted); }) return dataFormattedArray; } Si compruebo la variable allForms después de setAllForms , está vacía.
Resolví el problema... Era el forEach de hecho, solo reescribí la obtención de datos, reemplazando el forEach con un for ... of :
await Promise.all(snapshot.docs.map(async doc => { //Fetching in Paralel the data const docData = doc.data() as IForms const aux = [] as FormsData[]; for (const id of docData.formsFieldId) { const test = await GetOneFormsField(id); aux.push(test); } const dataFormatted = { ...docData, formsFieldId: [...aux] } dataFormattedArray.push(dataFormatted); }))gracias a todos los que respondieron a esto! ¡Salud!