【发布时间】:2016-01-08 21:19:51
【问题描述】:
我正在使用 Firebase Bolt Compiler 来构建我的安全规则,我遇到了以下情况:
-
我有一些嵌套数据想以以下形式发布到 Firebase:
data: { a: //Number, must always be present b: //Number, conditionally present (condition B) c: //Number, conditionally present (condition C) } -
条件 B 和 C 是基于一条数据,其他地方是 Firebase,如果满足,我希望包含的值,但如果不满足,我希望值为
nullroot.condition >= 5 //condition B root.condition >= 10 //condition C
以下是我尝试使用 Bolt 构建这些规则:
type ConditionB extends Number {
validate() = root.condition >= 5 ? this != null : this == null;
}
type ConditionC extends Number {
validate() = root.condition >= 10 ? this != null : this == null;
}
type Data {
a: Number,
b: ConditionB,
c: ContitionC
}
path /data is Data {
read() = true,
write() = true
}
下面是 rules.json:
"rules": {
"data": {
".validate": "newData.hasChildren(['a', 'b', 'c']),
...
}
}
可以看出.validate 规则强制所有孩子都出现在data 中。那么,根据我的情况,如何确保 .validate 及其每个子级的 .validate 规则都是正确的?
【问题讨论】:
标签: firebase firebase-security firebase-realtime-database