我有以下结构的邻居'在火基地:
neighbors: {
user100:{
user200:{
from:'1.2'
},
user300:{
from:'4.2'
},
user400:{
from:'2.4'
}
},
user700:{
user200:{
from:'8.7'
},
user500:{
from:'10.3'
}
}
}
支持user100,user200是auth-id。 我想让每个用户只写他自己,但要为他想要的每个其他用户做。 例如,我想让user200写下他是user500的邻居,但我不想让他写下其他用户(如用户800)是某人的邻居。
我努力但没有成功。 默认情况下,我尝试了以下解决方案,但仍无法正常工 解决方案是将结构更改为:
neighbors: {
user100:{
user200:{
from:'1.2',
neighbor:'user200'
},
user300:{
from:'4.2',
neighbor:'user300'
},
user400:{
from:'2.4',
neighbor:'user400'
}
},
user700:{
user200:{
from:'8.7',
neighbor:'user200'
},
user500:{
from:'10.3',
neighbor:'user500'
}
}
}
规则是:
neighbors:{
".write":"newData.child('neighbor').val() == auth.uid
}
但是我被许可拒绝了!
任何解决方案?
答案 0 :(得分:0)
您的规则检查邻居对象的直接子节点。 看起来你正在写邻居对象的每个孩子的孩子。
例如,在上面的示例中,第一个neighbor
值的路径看起来像neighbor/user100/user200/neighbor
规则必须类似。
neighbors:{
$user_id {
".write":"newData.child('neighbor').val() == auth.uid"
}
}
或者,如果您只想检查父键,它们似乎与邻居(?)的值相同:
neighbors:{
$user_id {
".write":"$user_id == auth.uid"
}
}
在这些示例中,$user_id
代表规则适用的密钥。
答案 1 :(得分:0)
试试这个:
"neighbors":{
"$user_id":{
".write":"newData.child('neighbor').val() == auth.uid"
}
}