Firebase保持同步

是伊万诺夫

为了获得简单的高分,在Unity项目中使用Firebase时,我偶然发现了执行查询时遇到的问题。在编辑器中,一切都像超级按钮一样工作(编辑器没有持久性)在设备(启用持久性)上,麻烦开始了。查询显示的是缓存的Firebase数据,因此仅在客户端首次调用时才是正确的,然后在Firebase认为适合同步时才正确(可能永远不会,因为没有事件处理程序)

但是,在寻找解决方案时,没有办法强制更新缓存的值。然后,我在查询中使用KeepSynced(true)进行了测试,这似乎可行:

this.HiscoreQuery = hiscoreref.OrderByChild ("Score").LimitToLast (20);
this.HiscoreQuery.KeepSynced(true);
this.HiscoreQuery.GetValueAsync().ContinueWith (task => {
  if (task.IsFaulted) {
    Debug.LogError ("Get hiscores faulted");
    return;
  }
  if (task.Result != null && task.Result.ChildrenCount > 0) {
    Debug.Log ("Get hiscore data success!");
    this.AddDelayedUpdateAction (() => this.OnGetHiScores (task.Result));
  }
});

问题:虽然如果Firebase仅侦听查询的LImitToLast(20)会很好,但是如果Firebase在内部将每个复制的(不断增长的)hiscorelist复制到每个客户端中,那将是一件非常糟糕的事情。

有谁知道KeepSynced(true)是限于实际查询范围还是整个树/分支?以及如何验证这一点?

弗兰克·范普菲伦

GetValue呼叫不适用于KeepSynced(true)Firebase会急切地从缓存中返回值,然后才从服务器加载数据。

有关详细说明,请在此处查看我的答案:Firebase脱机功能和addListenerForSingleValueEvent

如果要使用缓存,请使用侦听器而不是GetValue调用。使用侦听器,您的回调将被触发两次(如果有更改):一次使用来自缓存的值,然后一次使用来自服务器的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

保持Elasticsearch与密钥或版本同步

来自分类Dev

如何同步Firebase数据?

来自分类Dev

Firebase存储同步上传

来自分类Dev

从Firebase获取同步的阵列

来自分类Dev

Firebase同步API

来自分类Dev

如何同步Firebase数据?

来自分类Dev

从Firebase获取同步的阵列

来自分类Dev

Firebase存储同步上传

来自分类Dev

同步下载 Firebase 存储

来自分类Dev

使 Firebase 查询同步

来自分类Dev

Ember.bind不保持同步

来自分类Dev

如何使ViewModel验证与Model验证保持同步?

来自分类Dev

保持数据与服务器同步

来自分类Dev

使两个YouTube视频保持同步

来自分类Dev

使两个Meteor集合保持同步

来自分类Dev

如何保持Elasticsearch数据与MySql同步?

来自分类Dev

python:保持dict中的条目与原始同步?

来自分类Dev

是否JVM保持其时间与OS同步?

来自分类Dev

保持MenuItem的IsChecked属性与布尔同步

来自分类Dev

使状态与快速发生的事件保持同步

来自分类Dev

如何使分页数据与后端保持同步?

来自分类Dev

如何使iTunes资料库保持同步?

来自分类Dev

如何保持文件与Amazon Cloud Drive同步?

来自分类Dev

如何跟我分叉的仓库保持同步?

来自分类Dev

使GH主页与README.md保持同步

来自分类Dev

使两个Meteor集合保持同步

来自分类Dev

如何保持同步更新我的ListBox

来自分类Dev

使多个工作站保持同步

来自分类Dev

保持动态表与AngularJS中的模型同步