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

qui*_*mes 7 local-storage firebase angularfire

我一直在阅读关于离线(本地)存储和AngularFire的SO,我知道AngularFire用于与Angular模型和DOM的3路绑定使用.

具体参考如何在设备联机时将脱机数据库与Firebase同步?我可以看到,将本地存储引入混合中并不是一件小事.我不太明白在该线程中"启动"Firebase的概念.

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

  1. 我正在构建一个访客列表应用程序,它可以在多个设备上同时运行,使用Firebase作为访客列表的后端存储.
  2. 如果设备检查了guest虚拟机,它会传播到FB,从而传播到其他设备.它应该在本地存储中保留访客列表的最新副本.
  3. 在我居住的地方,3G覆盖是一个重大问题,因此有人可能会在连接时加载应用程序,关闭它,移动到另一个位置,然后在没有信号时尝试打开应用程序.
  4. 在这种情况下,应用程序应使用本地存储客户列表.
  5. 当设备再次联机时,请连接到Firebase并将本地存储更改上载到Firebase.

我知道Kato还提到在AngularFire的未来版本中可能会有离线存储功能 - 这是否还有可能?否则我的想法是这样做:

  1. 假设应用程序已在脱机模式下启动,则每次签入guest虚拟机时,都会更新本地存储.还要跟踪本地存储中的更改"已更改"变量.
  2. 当/如果设备重新联机时,请使用AngularFire将Firebase guestlist列入$ scope.guestList变量.
  3. 循环遍历本地存储"所做的更改"列表,并将这些更改发送到$ scope.guestList var.

它不是一种好方法,但我不知道其他任何方式.有没有办法直接将Firebase绑定到本地存储?

qui*_*mes 5

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

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

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