Firebase数据库.indexOn索引配置问题:仅首个子节点生效求助
解决Firebase数据库索引配置失效问题
现有数据节点结构
"Apps":{ "Booster": { "ANTBOOSTER": { "desc": "", "downloads": 30, "image": "", "tag": "", "title": "", "upvote": 50, "url": "" } }, "MoviesnShows": { "BeeTv": { "H20": true, "desc": "", "downloads": 11, "image": "", "tag": "", "title": "Bee Tv", "upvote": 1, "url": "" } } }
客户端错误提示
Using an unspecified index. Your data will be downloaded and filtered on the client. Consider adding '".indexOn": "upvote"' at Apps/Booster to your security and Firebase Database rules for better performance
该提示同时针对Booster、MoviesnShows等所有父节点,涉及upvote和downloads字段。
当前配置的核心问题
你写的规则存在语法嵌套错误,误将Booster节点嵌套在了MoviesnShows节点内部,导致Firebase只会解析到第一个节点的配置,后续节点的规则根本没被正确识别:
"Apps":{ "MoviesnShows":{ ".indexOn":["downloads","upvote","H20"], "Booster":{ ".indexOn":["downloads","upvote","H20"],
正确的配置方案
要把MoviesnShows和Booster作为Apps下的同级节点分别配置索引,同时保证JSON语法完整(闭合所有大括号),正确规则如下:
"Apps": { "MoviesnShows": { ".indexOn": ["downloads", "upvote", "H20"] }, "Booster": { ".indexOn": ["downloads", "upvote", "H20"] } }
关键注意点
- 每个需要索引的父节点(比如
Booster、MoviesnShows)必须单独在自身节点下配置.indexOn,不能嵌套在其他节点内 - 必须保证JSON语法完全正确,任何未闭合的括号都会导致规则解析中断,后续配置全部失效
- 如果后续
Apps下新增其他分类节点,也要按照同样的格式为其添加对应字段的.indexOn配置
内容的提问来源于stack exchange,提问作者Mark Harrop
相关产品推荐
相关产品推荐

