У меня есть база данных пользователей, где каждому пользователю дается случайный идентификатор. У каждого пользователя есть данные, которым я хочу получить свою ценность. Иногда мне нужен только 1 конкретный пользователь, а иногда мне нужны все данные пользователей. База данных выглядит так:
database
|
|__users
|____uid1
|_____dataKey1: value1
|_____dataKey2: value2
|_____dataKey3: value3
Если мне нужно только value1 dataKey1, как его получить? В настоящее время мой код возвращает карту всех дочерних элементов uid1:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref= rootRef.child("users").child("uid1");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
value= ds.getValue().toString();
Log.d("TAG", values);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
imageNamesRef.addListenerForSingleValueEvent(eventListener);
в журнале получаю:
TAG: value1
TAG: value2
TAG: value3
но я хочу:
TAG: value1
Где мне отфильтровать ключи, которые мне нужны?
Попробуйте следующее:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref= rootRef.child("users").child("uid1");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = dataSnapshot.child("dataKey1").getValue().toString();
Log.d("TAG", value);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
imageNamesRef.addListenerForSingleValueEvent(eventListener);
У вас есть доступ к дочернему uid1
, поэтому для получения значения dataKey1
вам не нужно зацикливаться.