是否有办法根据值获取一定数量的Firebase数据条目。例如,如果某个条目有100个孩子,每个孩子都有一个数字值,那么有没有办法请求具有十个最高值的孩子?
编辑:我意识到我可以简单地请求父级并遍历整个数据层次结构,直到找到具有最大值的十个,但这会浪费用户的数据,特别是如果父级包含数千个孩子答案 0 :(得分:5)
使用firebase,您正在处理nosql数据库。使用nosql数据库时,请在编写数据时生成报告,而不是在读取数据时生成报告。
例如。对于您提到的情况,维护另一个始终包含前十条记录(或指向它们的指针)的对象。
每次你向数据库写一个记录时,检查前十个列表,如果记录也属于那个,那么在这种情况下做必要的事情。
这种方法比迭代数据库更快,更有效。
答案 1 :(得分:4)
存储记录时,请使用setPriority。然后您可以检索具有最高值的那些,如下所示:
firebaseRef.child.limit(10).on(...);
或者您可以按如下方式对特定集进行分页或抓取:
firebaseRef.endAt(250).limit(10).on(...);