【发布时间】:2017-09-17 08:22:14
【问题描述】:
我想将数据存储在$user 下,其中一些数据可供公众读取,而一些数据仅供用户读取。安全规则如下所示:
{
"rules": {
"users": {
"$uid": {
"public":{
".read": "auth != null",
},
"private": {
".read": "$uid === auth.uid"
}
}
}
}
}
但是,由于security rules are not filters,如果我是$user 尝试在users/$user 读取,读取将失败,对吗?有没有办法实现这一点,或者在尝试获取实际用户的所有$user 信息时,我是否总是需要同时读取users/$user/public 和users/$user/private?
请注意,我想避免重复数据,以减少将重复数据与源节点保持同步的需要,以及在删除源节点时减少数据库卫生。我的模式是这样的,唯一的键是唯一的重复数据,它总是指向一个源节点作为查询的地方。
【问题讨论】:
-
您似乎已阅读表明该方案存在问题的相关文档。我还建议阅读许多questions about using rules for filtering data 中的一些。如果这些不能解决您的问题,请分享您打算用来读取数据的代码 - 因为这是在这种情况下提供帮助的关键。
标签: firebase firebase-realtime-database firebase-security