Trato de recorrer todos mis documentos y verifico si hay una coincidencia entre una identificación de objeto y mi identificación, luego inserto los datos en una matriz, mi problema es que no puedo recuperar ningún dato, mi matriz siempre está vacía aquí está mi código :
let d = [] let b; const all = await db.collection('cars') .get() .then(documentSnapshot => { if (!documentSnapshot.empty) { documentSnapshot.map(async (doc) => { idd = await doc.data().user.id; if(idd == 'myid'){ b = doc.data(); d.push(b) } }); } } ); return Promise.all(all).then(() => setActiveSpinner(false), setThereIsData(true)).catch(e => console.log(e))Tiene diferentes problemas dentro de su implementación.
En primer lugar, está mezclando ambos objetos simples de Promise con controladores de devolución de llamada junto con el uso imperativo async/await que generalmente conduce a un comportamiento no deseado del programa.
Está recopilando incorrectamente los diferentes document coincidentes utilizando el operador Array.prototype.map sin devolver un resultado para cada elemento ni para el resultado transformado.
Aquí abajo una implementación recortada usando el patrón async/await :
const result = []; const querySnapshots = await db.collection('cars').get(); for (const document of querySnapshots.docs) { const data = document.data(); if (data.user.id === 'myid') { result.push(b); } } setActiveSpinner(false); setThereIsData(true); return result;