相关疑难解决方法(0)

Firebase同步本地修改的数据:处理错误和全局状态

我有一个关于这两个相关的问题火力地堡网络平台本地修改数据发送到服务器的同步:

共享Firebase数据库的每个客户端都维护其自己的内部版本的任何活动数据.更新或保存数据时,会将其写入此数据库的本地版本.然后,Firebase客户端会以"尽力而为"的方式将该数据与Firebase服务器以及其他客户端同步.


1.处理同步错误

数据修改方法(set(), remove()等)可以采用onComplete回调参数:

在与Firebase服务器同步完成后将调用的回调函数.回调将Error在失败时传递一个对象; 别的null.

var onComplete = function(error) {
  if (error) {
    console.log('Synchronization failed');
  } else {
    console.log('Synchronization succeeded');
  }
};

fredRef.remove(onComplete);
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,fredRef.remove()回调期望接收哪种错误?

  • 暂时的错误?
    • 客户端离线(网络连接丢失)?
    • Firebase服务器暂时过载或关闭以进行维护,但很快就会再次提供?
  • 永久性错误?
    • 权限被拒绝(由于安全规则)?
    • 数据库位置不存在?

有没有办法区分临时和永久错误?

我们应该如何处理/从这些错误中恢复?

对于临时错误,我们是否需要fredRef.remove()在短时间后再次呼叫,以重试操作?


2.全局同步状态

我意识到每次调用set()并将remove()onComplete回调中收到单独的同步成功/失败结果.但我正在寻找一种方法来确定整个Firebase客户端全局同步状态.

我想使用一个beforeunload事件监听器来警告用户在所有修改过的数据同步到服务器之前他们试图离开页面,我正在寻找一些类似的功能firebase.isAllModifiedDataSynced().像这样的东西:

window.addEventListener('beforeunload', function (event) {
    if (!firebase.isAllModifiedDataSynced()) {
        event.returnValue = …
Run Code Online (Sandbox Code Playgroud)

javascript data-synchronization firebase firebase-realtime-database

5
推荐指数
1
解决办法
1215
查看次数