我想将数据存储在$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
上执行读取操作?
请注意,我想避免重复数据,以减少重复数据与源节点保持同步的需要,以及在删除源节点时减少数据库的卫生设施。我的模式是唯一的键是唯一的重复数据,它始终指向一个源节点作为查询的地方。
您似乎已经阅读了指示场景问题的相关文档。我也推荐阅读一些关于使用规则来过滤数据的问题(https://stackoverflow.com/search?tab=votes&q=%5bfirebase%5d%20rules%20are%20not%20filters)。如果这些不能解决您的问题,请分享您打算用于读取数据的代码 - 因为这对于解决这种情况至关重要。 –