Tengo una aplicación web simple que usa Firestore para recibir actualizaciones en tiempo real. Para simplificar, puedo demostrar el problema con el ejemplo de la documentación:
const unsub = onSnapshot(doc(db, "cities", "SF"), (doc) => { console.log("Current data: ", doc.data()); });NO estoy usando persistencia fuera de línea y estoy usando v 9.6.8.
En condiciones normales, todo funciona como se esperaba. Sin embargo, cuando pierdo la conectividad, no se me notifican los cambios que ocurren mientras estoy desconectado, incluso después de que se restablece la conectividad (simulo esto yendo al 'modo avión').
Una opción que he considerado, pero que aún no he probado, es suscribirme a eventos de conectividad desde el dispositivo (eventos de Windows en línea y fuera de línea). Antes de seguir con esta opción, me preguntaba si hay una solución más simple o mejor.
Firestore sincroniza el estado de los documentos, y no necesariamente todos los cambios en ese estado.
Por lo tanto, si se realizaron varios cambios en el documento SF mientras estaba desconectado y algunos de los cambios posteriores borraron los cambios anteriores, no verá esos cambios anteriores. Solo verá el estado actual correcto cuando se restablezca la conexión.
Si desea ver todos los cambios de estado, considere almacenar esos cambios de estado reales en la base de datos (por ejemplo, en una subcolección de updates ), para que ninguno de ellos se sobrescriba con cambios posteriores en los mismos datos.