当前位置: 首页 > 知识库问答 >
问题:

如何按时间间隔管理Firestore数据库中文档的脱机更新状态

鲜于雨石
2023-03-14

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

对于离线模式限制,我已设置此setPeristenceEnable(false)但仍在发送网络连接有问题的文档更新。

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


我已经尝试禁用/启用网络模式,但它不会帮助我解决这个问题
https://cloud.google.com/firestore/docs/manage-data/enable-offline#kotlinktxandroid_4

db.disable网络
db.enable网络

我需要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()

共有1个答案

田博易
2023-03-14

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

恕我直言,我看不出实施这个机制有什么好处,因为火神有自己的离线持久机制。根据官方留档:

Cloud Firestore支持离线数据持久性。此功能缓存应用程序正在使用的云Firestore数据的副本,以便应用程序可以在设备脱机时访问数据。

因此,脱机时,您可以继续使用该应用程序。此外,对于Android和iOS,默认情况下会启用脱机持久性。使用:

setPersistenceEnabled(false)

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

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

对于云Firestore,同样的规则也适用。

Firestore有什么办法吗?

只需删除上述代码行即可保持启用的离线持久性。有关更多信息,还请参阅我在以下帖子中的回答:

FiRecovery离线数据:合并写入,离线持久性的最长时间

 类似资料:
  • 首先,我知道从MySQL本身尝试这样做是不允许的: http://dev.mysql.com/doc/refman/5.6/en/stored-program-restrictions.html 当我尝试使用,我得到了“存储过程中不允许加载数据”。 我是在MySQL中移动数据的初学者,我意识到这可能不是它设计用来处理的任务。因此,我应该使用什么方法从CSV文件中获取数据并定期将其附加到表中?(我对

  • 接口说明 更新相机位置(名称和时间间隔) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/viewpoint/1.0.0/updateNameTime 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 id string form 是 视角ID name string form 是 视角名称 time

  • 问题内容: 匹配条件后,如何在一段时间后更新表? 我需要在满足某些条件后进行更新,并在2天后根据收到的最新答案(即e)进行更新,因此应在上进行更新。 问题答案: 试试这个 如此看来,这两个表是由相连的,并且具有的最新回答日期。通过使用我们可以知道今天的日期和比赛的答案之间的差异。

  • 数据更新时间指当前可分析数据是什么时间准备好的。通过它你可以了解到,目前数据的时效性。 eg:当数据更新时间显示为3分钟前,则代表可以查看约3分钟之前的数据;当数据更新时间显示00:00~6:00的某一个时间,则代表可以查看前一天以及更早的数据。 1.数据更新频率 (1) 当应用刚创建时,支持分钟级别数据更新频率,即刚上传的数据在几分钟内就能在系统中看到 (2) 当应用累计事件触发超过10000

  • 然后返回给我以下文档: 如何使用GroupOperation在spring-data-mongo中指定form这个聚合?

  • 我是消防队的新手。消防队的文件说... 重要提示:与Firebase实时数据库中的“推送ID”不同,Cloud Firestore自动生成的ID不提供任何自动排序。如果希望能够按创建日期对文档进行排序,则应将时间戳存储为文档中的字段。