2017-04-10 42 views
0

我已經存儲用戶數據,例如ID,積分暱稱火力地堡數據庫。現在我已經創建了一個排行榜,我只需要幾個(缺口,點),現在我用的是這樣的:如何僅檢索Firebase上的特定屬性?

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("users"); 
    Query query = mDatabase.orderByChild("points"); 
    //initialize Firebase adapter 
    ListAdapter adapter = new CustomFirebaseAdapter<User>(this, User.class, R.layout.list_item, query) { 
     @Override 
     protected void populateView(View v, User model, int position) { 
      //populate the ListView 

然後我在模型上使用getter方法。 現在我擔心代碼的安全性,我認爲每部手機都會下載每個用戶存儲的所有數據。有沒有辦法只檢索我需要的屬性?

+0

@ lello-lelli你都在質疑兩兩件事:權限和查詢單個元素。請更改您的標題以匹配您實際希望得到答案的問題;-) –

回答

0

看看Understand Firebase Realtime Database RuleGoogle Firebase documentation

您可以在Firebase Database上創建資源,並根據提出請求的給定用戶標識限制讀取和寫入權限。

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".write": "$uid === auth.uid" 
     } 
    } 
    } 
} 
+0

可能是這樣的,我會看看你的鏈接。我錯過了說,在排行榜之外,每個用戶都希望訪問所有存儲的數據,但我不想讓該用戶在其設備上下載關於用戶B的私人信息!希望我能做到這一點 –

+0

然後使用'$ uid'將解決權限問題。在我的情況下,我只允許用戶訪問圖片元數據,只要當前的$ uid匹配每個列出的資源。 –