2017-10-12 86 views
0

我一直在搞亂我的firebase數據庫規則,試圖讓用戶無需身份驗證,只編輯我的數據庫中的某個孩子,但我似乎無法弄清楚。只允許讀/寫一個孩子

這裏是數據庫結構:

enter image description here

所以我試圖讓用戶無需認證編輯VideoID的,但不僅如此,我需要的規則,忽略了房間ID(5555在這個例子中),這意味着它只允許閱讀和編輯房間/(roomid)/ videoID

感謝您的各種幫助!

回答

0

Firebase數據庫規則允許使用變量,並且可以在不同的深度具有不同的規則。

對於您的情況,以下規則將允許任何用戶(已驗證或未驗證)訪問/rooms/$roomid/videoID,但只有經過驗證的用戶才能訪問整個/rooms/樹。

{ 
    "rules": { 
    "rooms": { 
     ".read": "auth != null", 
     ".write": "auth != null", 
     "$roomid": { 
     "videoID": { 
      ".read": "true", 
      ".write": "true", 
     } 
     } 
    } 
    } 
} 

的火力地堡規則模擬器(從火力地堡數據庫控制檯的規則選項卡訪問)是測試規則有用發佈前: simulator

0

也許是這樣的:

{ 
    "rules": { 
    ".read": true, 
    ".write": "auth != null", 
    "rooms": { 
     "$roomId": { 
      "videoID": { 
      ".write": true 
      } 
     } 
    } 
    } 
} 

這將允許與認證用戶編輯videoID之外的另一個領域。

但是如果你想連authentificated用戶,也只能編輯videoID,那麼規則是:

{ 
    "rules": { 
    ".read": true, 
    ".write": false, 
    "rooms": { 
     "$roomId": { 
      "videoID": { 
      ".write": true 
      } 
     } 
    } 
    } 
} 

記住,當規則設置true它不會遍歷獨生子女政策,但如果將其設置false它會繼續檢查孩子的規則。