当我从Firebase删除数据时,我的.validate规则似乎没有被执行.这是一个错误还是故意行为?
Mic*_*uer 12
通常,.validate规则用于定义数据存在时的外观. 删除数据时故意不运行它们.您应该使用.write规则来决定是否应该允许写入(或删除).
例如,考虑这些用于保护简单聊天室的规则,用户可以在其中创建新的聊天室,但只删除他们所属的聊天室:
{
"rules": {
".read": true,
"$room": {
".write": "auth != null && (
(!data.exists() && newData.child('owner').val() == auth.uid) ||
(!newData.exists() && data.child('owner').val() == auth.uid))",
".validate": "newData.hasChildren(['owner', 'name'])",
"name": {
".validate": "newData.val().length > 10"
},
"messages": {
".write": "auth != null"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
.write规则用于决定用户是否有权创建/删除聊天室,而.validate规则用于定义聊天室应该是什么样子(如果存在).
如果在删除时运行.validate规则,则永远不能删除聊天室(因为两个.validate规则都会失败).因此决定不对删除运行.validate规则.
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |