是否可以将Firebase绑定到本地存储?

时间:2015-03-19 10:18:28

标签: local-storage firebase angularfire

我已经在S.O.上阅读了很多。关于离线(本地)存储和AngularFire,我知道AngularFire用于与Angular模型和DOM的3路绑定使用。

具体参考How to sync offline database with Firebase when device is online?我可以看到,将本地存储引入混合物并不是一件小事。我并不完全理解"启动"该线程中的Firebase。

但是,我确实需要能够在离线模式下启动应用程序。这是我的情景:

  1. 我正在建立一个访客列表应用,它可以在多个设备上同时运行,使用Firebase作为访客列表的后端存储。
  2. 如果设备检查来宾,它会传播到FB,从而传播到其他设备。它应该在本地存储中保留访客列表的最新副本。
  3. 我居住的地方,3G覆盖是一个重大问题,因此有人可能会在他们连接时关闭它,关闭它,移动到另一个位置,然后在没有信号时尝试打开应用程序。
  4. 在这种情况下,应用应使用本地存储客户列表。
  5. 当设备再次联机时,请连接到Firebase并将本地存储更改上传到Firebase。
  6. 我知道Kato也提到过AngularFire的未来版本可能会有离线存储功能 - 这还有可能吗?否则我的想法就是这样做:

    1. 假设应用程序已在离线模式下启动,则每次签入访客时,都会更新本地存储。还要跟踪本地存储中的变化情况"所做的更改"变种
    2. 当设备重新联机时,使用AngularFire将Firebase访客列表拉入$ scope.guestList变量。
    3. 循环显示"所做的更改"从本地存储并将这些更改发送到$ scope.guestList var。
    4. 它并不是一种好方法,但我不知道其他任何方式。有没有办法直接将Firebase绑定到本地存储?

1 个答案:

答案 0 :(得分:5)

我已经决定在这种情况下不使用AngularFire可能会更好,而是直接使用Firebase SDK。 AngularFire的3路绑定使得很难拦截$ scope更改以放入本地存储。直接使用SDK可以拦截FB更改并将其直接保存到本地存储以及更新$ scope。

同样,使用ref.update()对FB进行更改是微不足道的,可以与更新本地存储一起完成。

如果应用程序以离线模式启动(从.firebasio.com / .info / connected中检测到),那么只需使用本地存储,但也可以使用Kato建议" prime" Firebase连接。我通过简单地调用空白ref.update({});来做到这一点。然后在更改本地存储中的数据时,还要运行正常的FB更新/推送/保存。然后当应用程序连接时,内存中的FB副本将与服务器同步。