繁体   English   中英

如何在时间间隔内管理 Firestore 数据库中文档的离线更新 state

[英]How to manage Offline Update state of document in Firestore database withing time interval

我创建了一个使用了 Firestore 数据库的应用程序。 现在我的任务是,用户可以在持续时间内采取更新文档的操作。
我的意思是如果用户尝试在在线模式下更新则没有问题但是如果用户设备有连接问题 poor.network connection 那么这个更新操作应该在 20 秒内触发以保存在 Firestore 服务器上。 如果用户不能在持续时间内执行,则应推出最后一个操作我的意思是缓存操作不应在 20 秒后推送

对于离线模式限制,我已经设置了这个 setPersistenceEnabled(false) 但文档更新仍在发送,其中 a.network 连接存在问题。

在实时数据库中,有一种方法可以找出设备连接https://firebase.google.com/docs/database/android/offline-capabilities

Firestore有什么办法吗?
我已尝试禁用/启用网络模式,但它无助于解决此问题
https://cloud.google.com/firestore/docs/manage-data/enable-offline#kotlin+ktxandroid_4

db.disableNetwork
db.enableNetwork

我需要 Android 中的这个功能

我试过这段代码来清除我正在进行的请求

val hashMap = HashMap<String, Any>()
                        hashMap["status"] = "ACCEPTED"
                        hashMap["time"] = time
                        app().firestoreDB
                            .collection("doc")
                            .document("id")
                            .update(hashMap)
                            .addOnSuccessListener {
                                isStoredOnServer = true
                                // my action 
                            }

            object : CountDownTimer(20000, 1000) {
                    override fun onTick(millisUntilFinished: Long) {
                        if(isStoredOnServer){
                            this.cancel()
                        }
                    }
                    override fun onFinish() {
                        if(!isStoredOnServer) {
                            FirebaseFirestore.getInstance().clearPersistence()
                                .addOnFailureListener { e -> Log.d("Firestore", "Error persistence writing document $e") }
                                .addOnSuccessListener { Log.d("Could enable persistence:") }

                        }
                    }
                }.start()

但是,如果用户设备存在网络连接不佳的连接问题,则应在 20 秒内触发此更新操作以保存在 Firestore 服务器上。 如果用户不能在持续时间内执行,则应推出最后一个操作,我的意思是缓存操作不应在 20 秒后推送

恕我直言,我看不出实施这种机制有什么好处,因为 Firestore 有自己的离线持久化机制。 根据官方文件

Cloud Firestore 支持离线数据持久化。 此功能会缓存您的应用正在使用的 Cloud Firestore 数据的副本,以便您的应用可以在设备离线时访问这些数据。

因此,在离线状态下,您可以继续使用该应用程序。 除此之外,对于Android和iOS,默认开启离线持久化。 使用:

setPersistenceEnabled(false)

这意味着将PersistenceEnabled选项设置为 false,这意味着您禁用整个持久性功能。

在实时数据库中,有一种方法可以找出设备连接性

对于 Cloud Firestore,适用相同的规则。

Firestore有什么办法吗?

只需通过删除上面的代码行来保持离线持久性。 有关更多信息,另请参阅我在以下帖子中的回答:

Firestore离线数据:合并写入,离线持久化的最大时间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM