【发布时间】:2020-01-16 20:20:40
【问题描述】:
在 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 只监听 Query 的 LImitToLast(20) 这可能没问题,但如果 Firebase 在内部将整个(不断增长的) hiscorelist 复制到每个客户端,那将是一件非常糟糕的事情。
有谁知道KeepSynced(true) 是否仅限于实际查询范围或整个树/分支?如何验证这一点?
【问题讨论】:
标签: c# firebase unity3d firebase-realtime-database