Estoy tratando de desarrollar una aplicación web usando Laravel y vue.js donde puedo sincronizar datos de Firestore incluso si no estoy conectado. He visto en las funciones de firestore que proporciona esta función. Pero no sé cómo incluir esta característica en mi proyecto. He clonado suhasrkms/laravel-with-firestore para Firestore en Laravel. Pero el principal problema al que me enfrento es que no sé cómo agregar código/persistencia fuera de línea. Traté de agregar el código en resources/js/offline-persistence.js que se proporciona en Firestore doc. También he intentado agregar código en mi archivo blade.
Amablemente me proporcione la solución, su respuesta será valiosa para mí.
<script type="text/javascript"> firebase.firestore().enablePersistence() .catch((err) => alert(Something failed for enablePersistence, code: ${err.code})); firebase.firestore().collection('test') .onSnapshot(snaps => { if (snaps.empty) { return; } const preDataElm = document.getElementById("preData"); while (preDataElm.firstChild) { preDataElm.removeChild(preDataElm.firstChild); } let list = snaps.docs.map(snap => { return {id: snap.id, ...snap.data()}; }); let newElm = document.createElement("PRE"); newElm.innerText = JSON.stringify(list, null, 2); return preDataElm.appendChild(newElm); }); function tryMe() { document.getElementById("result").innerHtml = ""; firebase.firestore() .collection('test') .add({test: new Date().toString()}) .then((docRef) => alert(Data inserted successfuly ID: ${docRef.id})); } </script>Para agregar código/persistencia sin conexión, debe habilitar o deshabilitar la persistencia sin conexión al inicializar Cloud Firestore, como se indica en la documentación :
Para Android e iOS, la persistencia sin conexión está habilitada de forma predeterminada. Para deshabilitar la persistencia, establezca la opción PersistenceEnabled en falso.
Para la web, la persistencia sin conexión está deshabilitada de manera predeterminada. Para habilitar la persistencia, llame al método enablePersistence. El caché de Cloud Firestore no se borra automáticamente entre sesiones. Por lo tanto, si su aplicación web maneja información confidencial, asegúrese de preguntar al usuario si está en un dispositivo confiable antes de habilitar la persistencia.
También puede consultar el caso 1 y el caso 2 de stackoverflow donde el OP ha enfrentado un problema similar que se resolvió configurando la persistencia como:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);