簡體   English   中英

Firestore 中的離線/在線數據同步 - Laravel

[英]offline/online data sync in firestore - Laravel

我正在嘗試使用Laravelvue.js開發一個網絡應用程序,即使我處於離線狀態,我也可以在其中同步來自 firestore 的數據。 我在firestore的特性中看到它提供了這個特性。 但我不知道如何將此功能加入到我的項目中。 我已經在 Laravel 中為 Firestore 克隆了suhasrkms/laravel-with-firestore 但我面臨的主要問題是我不知道如何添加離線代碼/持久性。 我嘗試在 firestore 文檔中提供的 resources/js/offline-persistence.js 中添加代碼。 我也嘗試在我的刀片文件中添加代碼。
請為我提供解決方案,您的回復對我很有價值。

<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>

要添加離線代碼/持久性,您需要在初始化 Cloud Firestore 時啟用或禁用離線持久性,如文檔中所述:

  • 對於 Android 和 iOS,默認啟用離線持久化。 要禁用持久性,請將 PersistenceEnabled 選項設置為 false。

  • 對於 web,默認關閉離線持久化。要啟用持久化,調用 enablePersistence 方法。 Cloud Firestore 的緩存不會在會話之間自動清除。因此,如果您的網絡應用處理敏感信息,請確保在啟用持久性之前詢問用戶他們是否在受信任的設備上。

您也可以參考計算器案例1案例2 ,其中一個類似的問題已經面臨這得到了通過建立持久的解決OP:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM