1

我有這個結構數據庫:火力地堡權限

public: { 
    UID_1: { ... }, UID_2: { ... }, ... 
} 
users : { 
    UID_1: { ... }, UID_2: { ... }, ... 
} 

而且我想設置權限允許讀/寫爲「用戶」只爲適當的用戶(UID所有者),並允許讀「公衆」給大家,並寫入適當的用戶(uid所有者)。 現在我有

{ 
    "rules": { 
     "users": { 
     "$uid": { 
      ".read": "auth.uid === $uid", 
      ".write": "auth.uid === $uid", 
     }, 
     }, 
     "public": { 
     "$uid": { 
      ".read": "auth.uid !== null", 
      ".write": "auth.uid === $uid", 
     } 
     } 
    } 
    } 

但是,當我試圖通過 this.db.child('public').once('value', snapshot => { ... } 列出從「公共」的所有位置,它沒有發現任何價值。當我將整個「公共」讀/寫設置爲true時,它就可以工作。 直覺在這裏不起作用

回答

2

現在沒有人擁有/public的閱讀權限,但每個登錄用戶都擁有對其下的每個節點的讀取權限。爲了能夠從一個位置讀取,您需要在該位置的讀取權限

因此,要解決這個問題,移動.read規則/public一個級別:

"public": { 
    ".read": "auth.uid !== null", 
    "$uid": { 
     ".write": "auth.uid === $uid", 
    } 
    } 
+0

工程就像一個魅力,謝謝 –