firestore ios objective-c firebase firebase-database persistence

ios - firestore - Persistencia de Firebase, borrar el caché de Firebase



firebase offline ionic (1)

Desafortunadamente, este es el comportamiento esperado con la versión beta actual de la persistencia del disco. Probablemente pueda evitarlo mediante el uso de observeEventOfType en lugar de observeSingleEventOfType

Básicamente, siempre que observe datos, vamos a extraer datos de nuestra memoria caché permanente primero. Esa información será cualquier información que recibamos por última vez de Firebase. Dado que está utilizando observeSolEventOfType en lugar de observeEventOfType, no va a recibir actualizaciones regulares de Firebase y, por lo tanto, los datos que hemos almacenado en la memoria caché no incluirán los datos más recientes que haya escrito.

Como una solución simple, puede agregar un observeEventOfType en los datos en cuestión. En realidad no necesitas hacer nada con los eventos. Pero si los escuchas todo el tiempo, su aplicación obtendrá los últimos datos de firebase y cuando llame a observeSingleEventOfType, puede estar seguro de que tendrá los últimos datos en la memoria caché.

Esto es un poco raro, y tenemos la intención de simplificar esta API antes de liberar la característica de persistencia en un formulario que no sea beta. Perdón por el dolor!

Mi aplicación usa Firebase para sincronizar y restaurar datos. Uso el setValue:withCompletionBlock: para insertar, actualizar y eliminar objetos de Firebase. Se llama a este método cada vez que hay un archivo guardado de CoreData, y así sincronizo todos mis cambios locales a Firebase

- (void) setValue:(id)value withCompletionBlock:(void (^)(NSError* error, Firebase* ref))block;

Ahora la sincronización carga todos los datos locales a la base de fuego, mientras que la restauración reemplaza los datos locales con los datos de la base de datos.

- (void) observeSingleEventOfType:(FEventType)eventType withBlock:(void (^)(FDataSnapshot* snapshot))block;

FEventTypeValue y uso FDataSnapshot para obtener datos de Firebase y restaurar los datos locales.

Así que todo funciona perfectamente para mí hasta que establezca la persistence en Firebase.

[Firebase setOption:@"persistence" to:@YES];

Ahora cuando la persistence está persistence , cuando actualizo, digamos inserte un objeto en Firebase, y luego restaure, los datos antes de que se restaure la inserción. es decir, el objeto recién insertado no se restaura. Sin embargo, si restablezco de nuevo, el objeto insertado se restaura. Lo mismo ocurre cuando se elimina un objeto. El objeto eliminado vuelve a aparecer cuando restauro por primera vez y desaparece cuando restauro. Veo que los objetos de Firebase se insertan y / o eliminan correctamente a través de la vista de datos de Firebase.

No estoy seguro de lo que estoy haciendo mal aquí. Solo tengo problemas cuando restauro Creo que la caché de Firebase está causando este problema de restauración. Estoy pensando en borrar el caché de Firebase antes de restaurarlo. Mi pregunta es

  1. ¿Borrar el caché antes de restaurar es un buen método?
  2. En caso afirmativo, ¿cómo borrar el caché de Firebase?
  3. Si no, ¿me puede sugerir el mejor método para restaurar datos?