我有一个像这样的数据结构来查找公共用户可以/不能访问的数据结构。我想添加一个验证规则,以便该值只能是布尔值true / false。
root {
Accessibility {
"ID-123": true,
"ID-234": false,
"ID-345": true,
"ID-456": true,
"ID-567": false,
}
....
....
}
但是,当我尝试使用模拟器向Accessibility写东西时,总是出现写拒绝错误,例如{“ TEST”:true}。我在做什么错了?
{
"rules": {
"Accessibility": {
".read": true,
".write": "auth != null",
".validate": "newData.val() == true || newData.val() == false"
},
....
....
}
谢谢
答案 0 :(得分:2)
根据您共享的规则,它会将规则应用到辅助功能的顶层,而不是其键,这意味着新数据包括键及其值,例如下面的ID-123: true
将其重组以查看id并使用.isBoolean()
函数。
{
"rules": {
"Accessibility": {
".read": true,
"$id" : {
".write": true,
".validate": "newData.isBoolean()",
}
},
}
}
然后在客户端SDK中以/Accessibility/ID-123
或true
的值在false
上进行更新/设置
答案 1 :(得分:0)
您是否尝试过使用 isBoolean() ?
从文档中说:
如果此RuleDataSnapshot包含布尔值,则返回true。返回 值:布尔值-如果数据是布尔值,则为true;否则为false。否则为假。
".validate": "newData.isBoolean()"