Hola, necesito obtener de mi base de datos firestore una lista de elementos como este
items={{ '2012-05-22': [{name: 'item 1 - any js object'}], '2012-05-23': [{name: 'item 2 - any js object', height: 80}], '2012-05-24': [], '2012-05-25': [{name: 'item 3 - any js object'}, {name: 'any js object'}] }}Así que este es mi código para hacerlo, pero no funciona.
const getUserEvents = () => { const FSquery = query( collection( FSdb, `usertasks/${user.uid}/events`) ) const unsubscribe = onSnapshot( FSquery, ( querySnapshot ) => { // get all documents (using the date as id) from user's events collection let eventData = {} querySnapshot.forEach( (doc) => { console.log("testing id", doc.id) let arr = [] // the id of the document is the date for the event eventData[ doc.id ] = arr console.log("testing array", arr) console.log("testing eventdata", eventData) }) // now we get the collection of events for each day let eventsOfTheDay = [] const eventKeys = Object.keys( eventData ) eventKeys.map( async (eventDate) => { const events = await getDocs( FSdb, `users/${user.uid}/events/${eventDate}/items`) events.forEach( (doc) => { let event = doc.data() event.id = doc.id eventsOfTheDay.push( event ) }) eventData[ eventDate ] = eventsOfTheDay console.log("this are the eventsoftheday", eventsOfTheDay) }) // now we can set it into a state that can be passed to components to be consumed by the calendar // eg setEvents( eventData ) }) }No obtengo ningún valor de eventsoftheday, ni siquiera la cadena de consloge "esto es eventsoftheday" Gracias, recibo este error [Rechazo de promesa no manejado: FirebaseError: Tipo esperado 'ba', pero era: un objeto Oa personalizado]
La función getDocs toma una consulta como el único parámetro, pero está pasando dos.
const events = await getDocs(FSdb, `users/${user.uid}/events/${eventDate}/items`)Intenta cambiar la línea de arriba para que te guste esto:
const events = await getDocs( collection(FSdb, `users/${user.uid}/events/${eventDate}/items`) ); // ^^^ // add collection