Firebase:按子项排序查询

时间:2017-11-22 02:59:33

标签: ios swift firebase firebase-realtime-database

在我的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,我希望最后收到该主题标签的名称

我如何查询我的数据库,以便它可以根据他们的帖子数量订购儿童?

1 个答案:

答案 0 :(得分:2)

没有原生查询允许您按子女数量排序。相反,您必须维护一个帖子的计数,存储在另一个孩子中,并按照该值对该标签进行排序。

你有两个选择。只要将帖子添加到主题标签,您就可以在客户端上维护计数。或者,编写一个Cloud Function,可以在出现任何变化时自动更新计数。在任何一种情况下,请务必使用事务来避免来自多个编写者的冲突。

另外请记住,因为你想要相反的帖子数量顺序,你必须存储一个自然从大多数帖子到最少帖子的订单。您可以存储负数,以确保最受欢迎的帖子(因此具有最小值)在最不受欢迎的帖子(具有最大值)之前排序。