使用Firebase规则根据孩子的孩子的值索引Firebase节点

时间:2019-02-06 01:08:25

标签: firebase firebase-realtime-database

使用Firebase规则根据孩子的孩子的值为节点编制索引

是否有可能使用Firebase规则根据那里的表决数索引所有表决子项,因此我可以返回表决的前10个节点,它们将具有最高的表决数。为了避免耗时的查询。

数据的结构如下。

   {
    "votes": {
        "LXlcgMyGG16N9HdR4HD":{
            "vote_count": 2,
            "uid1": true,
            "uid2": true
        }   
         "LXlix7BiJ3D9ZFd4sS5":{
            "vote_count": 3,
            "uid1": true,
            "uid2": true,
            "uid3": true
        }   
    }
}

1 个答案:

答案 0 :(得分:0)

假设使用此JSON:

{
  "votes": {
    "LXlcgMyGG16N9HdR4HD":{
        "vote_count":2,
        "uid": true,
        "uid2": true
    }   
     "LXlix7BiJ3D9ZFd4sS5":{
        "vote_count": 3,
        "uid": true,
        "uid2": true,
        "uid3": true
    }   
  }
}

您可以使用以下方法获得投票数最高的10个节点:

firebase.database().ref("votes").orderByChild("vote_count").limitToLast(10)

但是要注意一些事情:

  1. 您仍将下载所有投票的人的UID。如果不显示该信息,则下载它们会浪费带宽,随着用户数量的增加,带宽会变得更糟。在这种情况下,请考虑添加仅包含vote_counts的第二个顶级节点。
  2. 结果将按升序排列。如果要显示前十名,则意味着通常需要在客户端将它们反转。由于只有10个项目,因此对性能的影响应该忽略不计。

另请参阅Firebase documentation on ordering and filtering results