我有一个用户数据库,每个用户都有一个随机ID。每个用户都有我想要获得其价值的数据。有时我只需要一个特定的用户,有时我想要所有用户的数据。该数据库如下所示:
database
|
|__users
|____uid1
|_____dataKey1: value1
|_____dataKey2: value2
|_____dataKey3: value3
如果我只需要dataKey1的value1,如何获取它?目前,我的代码返回了所有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
我在哪里过滤出想要的键?
答案 0 :(得分:1)
尝试以下操作:
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
的值。