我的数据库有以下结构和规则,我的目标是禁止用户通过child()函数获取子项的名称,即使没有注册也是如此。我的意思是每个知道孩子名字的人都可以写,但我的问题是每个人都可以通过孩子的功能看到孩子的名字。
规则:
{
"rules": {
".read": true,
".write": true
}
}
结构:
{
"collaborate" : {
"xwkmM76Irf" : {
"css" : "",
"html" : "",
"js" : ""
}
}
}
禁止:
firebase.database().ref('collaborate').once(
'value',
function($snapshot){
...
}
);
允许:
firebase.database().ref('collaborate/'+$id).once(
'value',
function($snapshot){
...
}
);
firebase.database().ref('collaborate/'+$id).set({
...
});
由于
答案 0 :(得分:2)
您可以使用$
变量来读取子节点:
{
"rules": {
"collaborate": {
"$collaborateId": {
".read": true,
".write": true
}
}
}
}
以$
开头的规则适用于该位置的每个子节点。
因此,使用上述规则,您可以读取任何现有的子节点(但不能通过监听/collaborate
获取子节点列表)。您可以编写新的子节点(或一次覆盖现有节点)。