簡體   English   中英

Firestore如何禁用與雲數據庫的自動同步?

[英]Firestore how to disable automatic sync with cloud database?

我注意到這種行為:

  1. 斷開設備與互聯網的連接
  2. 離線時創建一些新文檔
  3. 關閉應用程序,然后
  4. 上網並重新打開App
  5. 文件會自動與Firestore同步(我無法控制completeListener)

問題是我在onCompleteListener中執行的操作未運行。 就像在描述的場景中未運行此代碼段(做一些非常重要的事情)一樣 ,當用戶脫機時也不會調用OnFailureListener,因此我無法確定它是否正常運行。

FirebaseFirestore.getInstance().document(...).collection(...)
                    .set(message).addOnCompleteListener {
                     //do some super important stuff
                   }

在這種情況下 ,我寧願自己進行同步所以我希望它失敗並且不再重復。

僅在這種情況下,如何才能禁用Firestore的自動同步?

因此,我想問這個問題,然后以某種方式將Firestore交易轉交給我。 因此,為了解決此問題,我使用了事務( firestore / 實時數據庫

客戶端脫機時事務將失敗。

所以現在如何運作。

我嘗試運行事務。 A如果失敗,則將其存儲到數據庫中B如果成功,則嘗試從數據庫中刪除它,並在每次啟動應用程序時運行同步服務(檢查未同步的dbs並插入丟失的內容)

val OBJECT = ...
val ref = FirebaseFirestore.getInstance().document(...).collection(...)

FirebaseFirestore.getInstance().runTransaction(
        object : Transaction.Function<Boolean> {

            override fun apply(transaction: Transaction): Boolean? {
                transaction.set(ref, OBJECT)
                transaction.update(ref, PROPERTY, VALUE)
                return true
            }
        })
          .addOnSuccessListener {
               println("Inserting $OBJECT ended with success==$it")
               //todo remove from dbs (unsynced messages)

          }.addOnFailureListener {
               it.printStackTrace()
               //todo save to dbs (unsynced messages)
                }

//它們在實時數據庫中的工作方式相似

暫無
暫無

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

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