代码之家  ›  专栏  ›  技术社区  ›  Faiz Mohamed Haneef

Firebase服务器端筛选不适用于indexOn

  •  1
  • Faiz Mohamed Haneef  · 技术社区  · 8 年前

    我正在使用以下查询创建条目

    var newMessageRef = friendlyChat.database.ref().child('dinos').push()
    newMessageRef.set({
        height: Math.round(100 * Math.random())
    });
    

    enter image description here

    我的firebase规则是

    {
      "rules": {      
        "dinos": {
          "$messageId": {
            ".indexOn": "height"
          },
          ".read": "auth !== null",
          ".write": "auth !== null"
        }
      }
    }
    

    在web浏览器上,我发出以下查询

    friendlyChat.database.ref('dinos').orderByChild('height').startAt(70).limitToLast(1).on('child_added', (d)=>console.log(d.val()))
    

    我在控制台中获得正确的输出,如下所示

    {height: 99}
    

    然而,当我检查控制台时,我看到整个节点从服务器下载,如下所示。此外,还有一个关于添加的警告。indexOn公司

    firebase规则或我的查询中是否有错误?

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  2
  •   Faiz Mohamed Haneef    8 年前

    解决更高级别节点上的索引。

        "dinos": {      
          ".indexOn": "height",
          ".read": "auth !== null",
          ".write": "auth !== null"
        },