angularjs - 设备在线时如何将离线数据库与 Firebase 同步?

标签 angularjs cordova firebase

我目前正在使用 angularJS 和 phonegap 为 Android/iOS 构建一个测试应用程序。

该应用仅使用存储在 Firebase 数据库中的文本数据。我希望应用程序拥有自己的本地数据库(在设备离线时使用)和某个时候(当设备在线时使用)
与 Firebase 数据库同步。

离线模式使用phonegap/cordova的存储API。我可以只检查设备的在线状态并定期备份在线数据库吗?

关于我如何实现这一目标的任何线索?上次问类似的问题,答案是“还没有”... (here) ...因为它专注于一个假设的 Firebase 功能。

最佳答案

如果 Firebase 在开始时在线并暂时失去连接,然后稍后重新连接,它将同步本地数据。因此,在许多情况下,一旦 Firebase 上线,您就可以在中断期间继续推送到 Firebase。

对于真正的离线使用,您可能希望监控设备的状态,并观看 .info/connected了解 Firebase 何时连接。

new Firebase('URL/.info/connected').on('value', function(ss) {
   if( ss.val() === null ) /* firebase disconnected */
   else /* firebase reconnected */
});

使用当前的 Firebase 工具集实现这一目标的方法,直到它支持真正的离线存储,将
  • 保持本地数据简单小
  • 当设备上线时,将本地存储的数据转换为 JSON
  • 使用 set()将数据保存到 Firebase 的适当路径

  • 此外,如果应用在设备离线时加载,出于某种原因,您可以通过调用 set() 来“初始化”数据来“准备”Firebase。然后,您可以照常使用 Firebase(就像它在线一样),直到它在将来的某个时候上线(您还需要存储本地副本以处理它永远不会在线的情况)。

    显然,越简单越好。并发修改、本地存储大小限制以及许多其他因素会迅速累积,使任何离线存储解决方案变得复杂且耗时。

    关于angularjs - 设备在线时如何将离线数据库与 Firebase 同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16809947/

    相关文章:

    authentication - 具有 HTTP 基本身份验证的 PhoneGap FileTransfer

    javascript - 云HTTPS函数: returning a Promise which is inside a Promisee

    javascript - MusicBrainz 应用程序的 JSON 对象的动态 GET | AngularJS

    javascript - 检查网络并处理空错误对象

    android - 为什么我的 Phonegap 应用程序的 Play 商店不支持 Sony Xperia E?

    javascript - 在 firebase 身份验证中,有没有办法删除自定义声明?

    android - 如何使用 FirebaseListAdapter 获取键和值

    jquery - 使用 AngularJS 在输入字段中显示 json 数据

    javascript - 通过数组迭代设置 $scope 属性值

    javascript - angularjs 使用 fileselect 连接下拉列表