我想將數據存儲在$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)。如果這些不能解決您的問題,請分享您打算用於讀取數據的代碼 - 因爲這對於解決這種情況至關重要。 –