2017-08-08 70 views
2

我想知道如果我的問題可以用火力DB規則來解決,這是一個問題:火力地堡DB - 僅允許用於onwer用戶(解決)對採集節點進行訪問

我怎麼能寫規則,以firebase只響應與經過身份驗證的用戶有關的請求?

我有2系列usersrequests。每個user有一個requests對象,並且每個requests對象都有一個users對象以連接兩個集合。 A request與兩個users有關。

波紋管是結構

{ 
"users": { 
    "user1": { 
     "requests": { 
      "req1": true, 
      "req2": true 
     } 
    }, 
    "user2": { 
     "requests": { 
      "req1": true 
     } 
    } 
}, 
"requests": { 
    "req1": { 
     users: { 
      user1: true, 
      user2: true 
     } 
    }, 
    "req2": { 
     users: { 
      user1: true, 
      user3: true 
     } 
    } 
}} 

我有一個規則來.read/.WRITE,但如果我請求/requests/someId這隻有:

{ 
    "requests": { 
    "$request_id": { 
     ".read": "data.child('users').hasChild(auth.uid)", 
     ".write": "data.child('users').hasChild(auth.uid)" 
}} 

我一直在努力很多規則的組合,但我不能只得到requestsuser當我要求/requests

任何幫助?

回答

1

您不能使用規則來「過濾」結果。您只能向該用戶有權訪問的數據庫的節點發送查詢。

解決方案是分解事情。比方說,你有這些鍵的集合: A,B,C,d,E,F,G

對於用戶ER4521,你需要做一個節點ER4521 /收集與作爲內容: B,d, F,G

第一個請求將獲取集合如果ER4521 /收集 ,然後發送一個請求,對於每個結果,以獲取有關B,d,F和G

或者你要去的所有信息使用將集合複製到用戶標識/集合的雲功能。

問候,彼得

+0

感謝您的觀點,它有助於解決這個問題! –

+0

以下是Firebase的文檔:https://firebase.google.com/docs/database/security/securing-data#rules_are_not_filters – p3sn