添加.indexOn安全规则与不添加安全规则之间有性能差异吗?

时间:2019-03-10 01:20:53

标签: javascript firebase firebase-realtime-database

{
    1:{
        status:"inactive"
    },
    2:{
        status:"inactive"
    },
    3:{
        status:"active"
    }
}

这是一个示例JSON结构。我的问题是我是否愿意:

return mainDB.ref("products").orderByChild('status').equalTo('inactive').once('value').then(data =>{
    console.log(JSON.stringify(data));
})

在添加.indexOn安全规则与不添加安全规则之间是否存在性能差异,并且如果添加了.indexOn,那么如果不在客户端上,则实际上在何时何地对其进行过滤?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果对未定义索引的属性执行查询,Firebase会将所有数据从该位置下载到客户端,然后在该位置执行排序和过滤。

这意味着您应该始终为要查询的属性定义索引,这就是为什么Firebase在发现您查询的没有索引的属性时会在JavaScript控制台中显示出非常响亮的消息。

>

更新以评论中的问题。

要为名为status的顶级节点下的每个子节点的属性products创建索引,您需要:

{
  "rules": {
    "products": {
      ".indexOn": "status"
    }
  }
}