{
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,那么如果不在客户端上,则实际上在何时何地对其进行过滤?
谢谢!
答案 0 :(得分:0)
如果对未定义索引的属性执行查询,Firebase会将所有数据从该位置下载到客户端,然后在该位置执行排序和过滤。
这意味着您应该始终为要查询的属性定义索引,这就是为什么Firebase在发现您查询的没有索引的属性时会在JavaScript控制台中显示出非常响亮的消息。
>更新以评论中的问题。
要为名为status
的顶级节点下的每个子节点的属性products
创建索引,您需要:
{
"rules": {
"products": {
".indexOn": "status"
}
}
}