在我的firebase数据库中,我有一个名为Hashtag的孩子。该子项包含主题标签的名称,该子项包含这些主题标签之外的帖子。
例如
Hashtags
L #firstHashtag
L post1: true
L post2: true
L post3: true
L #secondHashtag
L post4: true
L post5: true
L post6: true
L post7: true
L post8: true
L #thirdHashtag
L post9: true
这就是我的数据库的外观。
第一个标签有三个帖子。
第二个标签有五个帖子。
第三个标签有一个帖子。
这是我的标签参考
var HASHTAG_REFERENCE = Database.database().reference().child("Hashtags")
我的目标是按照最流行的顺序查询主题标签。帖子最多的主题标签是最受欢迎的标签。帖子最少的主题标签是最不受欢迎的主题标签。
所以最流行的标签是secondHashtag,我想先收到该主题标签的名称。最不受欢迎的主题标签是thirdHashtag,我希望最后收到该主题标签的名称
我如何查询我的数据库,以便它可以根据他们的帖子数量订购儿童?
答案 0 :(得分:2)
没有原生查询允许您按子女数量排序。相反,您必须维护一个帖子的计数,存储在另一个孩子中,并按照该值对该标签进行排序。
你有两个选择。只要将帖子添加到主题标签,您就可以在客户端上维护计数。或者,编写一个Cloud Function,可以在出现任何变化时自动更新计数。在任何一种情况下,请务必使用事务来避免来自多个编写者的冲突。
另外请记住,因为你想要相反的帖子数量顺序,你必须存储一个自然从大多数帖子到最少帖子的订单。您可以存储负数,以确保最受欢迎的帖子(因此具有最小值)在最不受欢迎的帖子(具有最大值)之前排序。