【发布时间】:2017-12-21 00:42:10
【问题描述】:
考虑以下规则:
{
"rules": {
"foo": {
".read": true,
".write": "!data.exists() || !newData.exists()",
".validate": "newData.isString() && newData.val().length < 100"
}
}
}
根据文档,data表示尝试操作之前的数据,newData表示尝试操作之后的数据。
所以,考虑foo 包含以下字符串。因此data 是
"foo":{
"Jellybean",
"Kitkat",
"Lollipop",
}
如果进行添加操作,newData 是
"foo":{
"Jellybean",
"Kitkat",
"Lollipop",
"Marshmallow",
}
如果进行了删除操作,newData 是
"foo":{
"Jellybean",
"Kitkat",
}
如果进行了更新操作,newData 是
"foo":{
"Jellybean",
"Kitkat",
"Nougat",
}
我无法弄清楚".write": "!data.exists() || !newData.exists()" 在前两种情况下如何变为真,但在第三种情况下则不然。您能否清楚地了解data 和newData 的含义以及它如何根据此规则禁止更新请求?
【问题讨论】:
标签: firebase firebase-realtime-database firebase-security