2017-04-07 10 views
0

私はfirebaseから特定の値を引き出す必要があるアプリケーションに取り組んでいます。この場合、「uID」が現在のユーザーIDと等しい「スコア」を取得する必要があります。何をするのが最善の方法でしょうか。firebaseから特定の値を引き出す方法

ありがとうございました。

enter image description here

+0

** Leaders-> key-> data **の代わりに、** Leaders-> user id-> key-> data **のようにして、あなたが望むユーザーのデータを単に取り出すことができます – AlwaysConfused

+0

いくつかのサンプルコード?それは大きな助けになるでしょう – MariusBrave

+0

これは非常に簡単です、ちょうどfirebase docs [ここ](https://firebase.google.com/docs/database/android/read-and-write)に従ってください。あなたがこれを参照することができます – AlwaysConfused

答えて

1

Firebaseは常に完全なノードを返します。だから、あなたは単にユーザーのスコアを返すことはできません。しかし、あなたは Firebaseクエリを使用して、スコアとユーザーの両方が(-K...で始まる1)の下にある共通のノードを返すことができます。コードは、結果でsnapshotをループしていること

DatabaseReference leadersRef = FirebaseDatabase.getInstance().getReference("Leaders"); 
Query query = leadersRef.orderByChild("uID").equalTo("vUdnKx..."); 
query.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     for (DataSnapshot child: snapshot.getChildren()) { 
      System.out.println(child.getKey()+": "+child.child("Score").getValue(Long.class)); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     // Getting Post failed, log a message 
     Log.w(TAG, "onCancelled", databaseError.toException()); 
     // ... 
    } 
}) 

注意を。これは、クエリには複数の結果が潜在的に存在するためです。したがって、スナップショットにはそれらの結果のリストが含まれています。結果が1つだけの場合でも、スナップショットには1つの結果のリストが含まれます。

詳しくは、Firebase documentation on handling listsおよびsorting and filtering dataを参照してください。

+0

ありがとう...それは私だ得られた結果は – MariusBrave

+0

複数の結果に関しては、各ユーザーは1人のリーダー「子」しか持たないため、大きな問題が発生するはずです – MariusBrave

0

JSON Database beeingて、FirebaseはWHERE句を提供していません。これを実現するには、Score_uIDという名前の新しいフィールドを作成し、値を10_vUdnKxCSRegqruSAi1Ncz5HWPOにすることができます。この新しい仲間を持つことで、「スコア」が「uID」が現在のユーザーIDと等しい値だけを選択することができます。これはFirebase内の一般的なプラクティスです。それが役に立てば幸い。

関連する問題