这是我计划在我的留言板应用程序中使用的架构,用户可以在其中创建自己的留言板:
{
"boards" : {
"jane-board" : {
// meta information like who created this board
},
"john-board" : {
// meta information like who created this board
},
...
},
"jane-board" : {
// data
},
"john-board" : {
// data
}
}
确保"boards"
不能包含两个"jane-board"
的规则是什么?
我尝试编写规则但失败了:
{
"rules" : {
".read" : true,
"boards" : {
".write" : true,
"$board_name" : {
".validate" : "!newData.parent().hasChild($board_name)"
}
}
}
}
答案 0 :(得分:1)
由于您使用电路板的名称作为存储它的密钥,因此可以保证每个电路板名称最多只能存在一次。
并不完全清楚你想要完成的事情。但如果您试图阻止董事会的数据被覆盖,您可以通过以下方式实现这一目标:
{
"rules" : {
".read" : true,
"boards" : {
"$board_name" : {
".write" : "!data.parent().hasChild($board_name)"
}
}
}
}
规则变更:
".write": true
删除了boards
。根据该规则,每个人都可以阅读所有板,因为您cannot take permissions away on a lower level。".write"
规则,因为它更像是阻止写入而不是验证结构newData
,但这没有任何意义:新主板将始终存在于新数据中。