我正在尝试将 .indexOn 添加到 fireabase.json 以在实时数据库模拟器上使用排序和过滤。但无论我做什么,同样的错误,下面的错误代码,不断发生。
InvalidArgumentError:未定义索引,将路径“/test”添加“.indexOn”:“t”到规则中
我阅读了官方文档,但没有找到关于在 firebase.json 中在哪里编写规则的明确说明。
请教我我做错了什么。
我正在研究Python,下面是我的尝试,但没有成功。
我想要实现的操作
test = db.reference('test').order_by_child("t").get()
实时数据库结构
test->1->{t : timestamp, h : list of string}
2->{t : timestamp, h : list of string}
规则之前的firebase.json结构
"emulators": {
"auth": {
"port": 9099
},
"functions": {
"port": 5001
},
"firestore": {
"port": 8080
},
"hosting": {
"port": 5000
},
"ui": {
"enabled": true
},
"singleProjectMode": true,
"database": {
"port": 9000
},
}
Attemp1:将规则放在数据库下
将规则放入数据库
"database": {
"port": 9000,
"rules" : {
"test" : {".indexOn" : ["t"]}
}
}
Attemp2:将规则放在模拟器下
将规则放在模拟器下
"emulators": {
"rules" : {
"test" : {".indexOn" : ["t"]}
},
}
Attemp3:将indexOn值从字符串列表更改为字符串
将indexOn的值更改为单个字符串而不是字符串列表
"emulators": {
"rules" : {
"test" : {".indexOn" : "t"}
},
}
经过额外的尝试,我能够通过以下问题的答案来解决该问题。 实时数据库模拟器忽略database.rules.json
创建了名为database.rules.json的实时数据库规则文件并写在下面
{ “规则”:{ “.read”:假, “.write”:假, “测试”:{“.indexOn”:[“t”]} } }
在 .firebaserc 文件上添加数据库设置
在 firebase.json 添加了数据库设置