2017-04-10 12 views
0

私はID、ポイント、ニックネームなどのユーザーデータを格納するFirebaseデータベースを持っています。今では、私はちょうど少数(ニック、ポイント)が必要なリーダーボードを作成しましたが、今私はこのようなものを使用しています: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 

そして、私はモデルでゲッターメソッドを使用します。 私はコードのセキュリティについて心配しています。各携帯電話は、各ユーザーの内部に保存されているすべてのデータをダウンロードすると思います。必要な属性だけを検索する方法はありますか?

+0

Lelloの-lelli @あなたは二つのことを疑問視されています。許可をし、単一の要素を照会します。あなたが本当に答えを望む質問にマッチするタイトルを変更してください;-) –

答えて

0

Understand Firebase Realtime Database RuleGoogle Firebase documentationでご覧ください。

Firebase Databaseでリソースを作成し、要求を行っている特定のユーザーIDに応じて読み取りと書き込みのアクセス許可を制限できます。

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

おそらくそれのようなもの、私はあなたのリンクを見ていきます。私はリーダーボードの外側では、各ユーザーが保存されているすべてのデータにアクセスしたいと思っていましたが、そのユーザーにデバイスBの個人情報、たとえばユーザーBのダウンロードを欲しくないと言いました。うまくいけば私はそれを行うことができます –

+0

次に '$ uid'を使用して権限の問題を解決します。私の場合、現在の '$ uid'がリストされた各リソースのものと一致する場合にのみ、ユーザーに画像メタデータへのアクセスを許可します。 –

0

ユーザーインスタンスにルールセットを作成する必要があります。例えば が読み込まれ、importantAtributteに書き込みを拒否:詳細については

{ 
    "rules": { 
    "users": { 
     "$importantAtributte": { 
     ".read": false, 
     ".write": false" 
     } 
    } 
    } 
} 

https://firebase.google.com/docs/database/security/securing-data

関連する問題