最有效的方法来统计Firebase数据库中的子节点数

6 浏览
0 Comments

最有效的方法来统计Firebase数据库中的子节点数

目前我是这样做的:

DatabaseReference reference = FirebaseDatabase.DefaultInstance.GetReference("Leaders").Child("List1");
         reference.GetValueAsync().ContinueWith(task =>
         {
             int totalChildren = (int)task.Result.ChildrenCount;
               //做更多的事情
         } 

我在想,为什么要获取整个快照来计算子节点的数量。

有没有其他方法可以避免获取整个快照呢?

0
0 Comments

Firebase数据库没有内置的计数操作符。所以你要么需要下载所有子节点来进行计数(就像你现在正在做的),要么保持一个单独的属性来跟踪子节点的数量。

后者在写入时需要更多的工作,但在读取性能上更简单。你会发现,在NoSQL数据库中,读取性能与写入性能之间的权衡是很常见的。

关于这个问题,可以参考以下链接:

- [Firebase中是否有一种方法可以在不加载所有节点数据的情况下获取节点的子节点数量?](https://stackoverflow.com/questions/15148803)

- [Firebase计算父节点的子节点数](https://stackoverflow.com/questions/44760645)

- [如何在Firebase中获取元素/列表的大小而不获取全部数据?](https://stackoverflow.com/questions/38443421)

非常感谢,这些限制越多,你就越能深入了解。由于这是一个排行榜,可以由不同的用户进行更新,所以我无法在本地保存子节点的数量。希望他们能添加计数选项。

在这个阶段,Firebase实时数据库几乎不可能添加计数选项。但请注意,之前有很多开发人员能够根据我上面展示的方法显示计数。所有这些方法都适用于多个用户。

是的,你的链接很好地总结了不同的解决方案!我喜欢“shallow=true”,但我找不到任何解释它如何在Unity Firebase SDK中使用的文档,因为它似乎只适用于Rest调用。

这是正确的,浅加载只在REST API中可用。在数据库中保持一个计数器是迄今为止最好的方法。

0