在我的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,我想最后接收该主题标签的名称
我如何查询我的数据库,以便可以按照孩子们的职位数对其排序?
最佳答案
没有本机查询可以让您按孩子数进行排序。取而代之的是,您必须维护存储在另一个子项中的帖子数,并按该值对主题标签进行排序。
您有两种选择。只要将帖子添加到主题标签,就可以维护客户端的计数。或者,编写一个Cloud Function,以便在发生任何更改时自动使计数保持最新。无论哪种情况,请确保使用事务以避免来自多个编写器的冲突。
还请记住,由于您想要相反的帖子数量顺序,因此您必须存储一个值,该值自然可以从大多数帖子到最少帖子。您可以存储一个负数,以确保最受欢迎的帖子(因此具有最小的值)被排列在最不受欢迎的帖子(具有最大的值)之前。
关于ios - Firebase:按 child 数排序的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47426110/