我有终点:
/schools/$schoolId/rooms/$roomName/id
/schools/$schoolId/rooms/$roomName/name {must be unique ignoring case}
/schools/$schoolId/rooms/$roomName/{other attributes not relevant i think}
我希望没有两个房间具有相同的名称,因此我将其存储为密钥。我在设置值之前将名称转换为小写,因此我有以下安全规则:
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"schools":{
"$schoolId":{
"rooms":{
"$roomName":{
".validate": "$roomName===newData.child('name').val().toLowerCase() && !data.parent().child(newData.child('name').val().toLowerCase()).exists()"
}
}
}
}
}
}
这些规则不允许我写任何新房间。
答案 0 :(得分:0)
您可以在单个房间内为属性名称提供角色 像这样:
"rooms":{
//A Room
"$roomId": {
"name": {
".write": "!data.exists()"
}
}
}