私はfirebaseから特定の値を引き出す必要があるアプリケーションに取り組んでいます。この場合、「uID」が現在のユーザーIDと等しい「スコア」を取得する必要があります。何をするのが最善の方法でしょうか。firebaseから特定の値を引き出す方法
ありがとうございました。
私はfirebaseから特定の値を引き出す必要があるアプリケーションに取り組んでいます。この場合、「uID」が現在のユーザーIDと等しい「スコア」を取得する必要があります。何をするのが最善の方法でしょうか。firebaseから特定の値を引き出す方法
ありがとうございました。
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を参照してください。
ありがとう...それは私だ得られた結果は – MariusBrave
複数の結果に関しては、各ユーザーは1人のリーダー「子」しか持たないため、大きな問題が発生するはずです – MariusBrave
JSON Database
beeingて、FirebaseはWHERE
句を提供していません。これを実現するには、Score_uID
という名前の新しいフィールドを作成し、値を10_vUdnKxCSRegqruSAi1Ncz5HWPO
にすることができます。この新しい仲間を持つことで、「スコア」が「uID」が現在のユーザーIDと等しい値だけを選択することができます。これはFirebase内の一般的なプラクティスです。それが役に立てば幸い。
リアルタイムデータベースDocs for firebase(https://firebase.google.com/docs/database/android/read-and-write)をチェックしてください。
あなたはあなたの答えを得るでしょう
** Leaders-> key-> data **の代わりに、** Leaders-> user id-> key-> data **のようにして、あなたが望むユーザーのデータを単に取り出すことができます – AlwaysConfused
いくつかのサンプルコード?それは大きな助けになるでしょう – MariusBrave
これは非常に簡単です、ちょうどfirebase docs [ここ](https://firebase.google.com/docs/database/android/read-and-write)に従ってください。あなたがこれを参照することができます – AlwaysConfused