Entonces necesito convertir datos de la instantánea de Firebase 9 a una matriz.
Se me ocurrió algo como esto, pero no devuelve nada.
Revisa los comentarios en mi código.
Supongo que debería usar promesas, pero no puedo encontrar la manera correcta.
const fetchNewMessages = async (threadId: string, latestTimestamp: any) => { const q = query(threadRef(threadId), orderBy('timestamp', 'asc'), startAfter(latestTimestamp)); const messages: IMessage[] = []; onSnapshot(q, (querySnapshot) => { const docs = querySnapshot.docChanges(); docs.forEach((change) => { if (change.type === "added") messages.push(fetchDoc(change.doc)); }); console.log(messages.length); // here I get 34 }); console.log(messages.length); // here I get 0 return messages.reverse(); };intente esperar "onSnapshot"
const fetchNewMessages = (threadId: string, latestTimestamp: any) => { const q = query(threadRef(threadId), orderBy('timestamp', 'asc'), startAfter(latestTimestamp)); const messages: IMessage[] = []; return new Promise((resolve) => { onSnapshot(q, (querySnapshot) => { const docs = querySnapshot.docChanges(); docs.forEach((change) => { if (change.type === "added") messages.push(fetchDoc(change.doc)); }); resolve(messages.reverse()); }); }); };