我目前正在使用 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 工具集实现这一目标的方法,直到它支持真正的离线存储,将
set()
将数据保存到 Firebase 的适当路径 此外,如果应用在设备离线时加载,出于某种原因,您可以通过调用 set() 来“初始化”数据来“准备”Firebase。然后,您可以照常使用 Firebase(就像它在线一样),直到它在将来的某个时候上线(您还需要存储本地副本以处理它永远不会在线的情况)。
显然,越简单越好。并发修改、本地存储大小限制以及许多其他因素会迅速累积,使任何离线存储解决方案变得复杂且耗时。
关于angularjs - 设备在线时如何将离线数据库与 Firebase 同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16809947/