Cuando elimino el if-stament, obtengo los datos y doc.data() funciona, pero necesito verificar el tipo 'agregado' para no generar datos existentes una y otra vez.
Con la instrucción if, recibo este mensaje de error:
TypeError no detectado: doc.data no es una función
async getChats(callback){ const roomFilter = query(colRef, where("room", "==", this.room)); const ordered = query(roomFilter, orderBy('created_at')); this.unsub = onSnapshot(ordered, (snapshot) => { let items = [] snapshot.docChanges().forEach(doc => { if(doc.type === 'added'){ items.push({ ...doc.data(), id: doc.id }) console.log(items); callback(items); }}) });snapshot.docChanges().forEach(doc => { La variable que ha llamado doc es más que solo el documento. Tiene información adicional sobre el cambio. Con el nombre de la variable que ha elegido, debe hacer lo siguiente:
items.push({ ...doc.doc.data(), id: doc.doc.id })Sin embargo, consideraría cambiarle el nombre, tal vez para "cambiar"
snapshot.docChanges().forEach(change => { if (change.type === 'added') { items.push({ ...change.doc.data(), id: change.doc.id }) console.log(items); callback(items); } })