是否可以在没有Firebase中的整个父项的情况下从对象中获取子项 例如,客户注册表,我需要所有" name"字段,但我没有用户" uid"。 ...
答案 0 :(得分:1)
是的,这是可能的。请使用此代码:
DatabaseReference yourRef = FirebaseDatabase.getInstance().getReference().child("usuarios");
usersRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> list = new ArrayList<>();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String uId = (String) ds.getKey();
String nome = ds.getChild("nome").getValue(String.class);
list.add(nome);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
你首先迭代得到那些uid,然后在DatabaseReference
中使用它们。
希望它有所帮助。
答案 1 :(得分:0)
亚历克斯的答案将起作用(我的评论很好)。
但你应该意识到这会下载所有用户的所有数据。 Firebase数据库中无法仅下载每个节点的一个属性。因此,如果您想要一种有效的方式来下载名称列表,那么您应该在数据库中保留这一名称:名单列表。
usernames
uid1: "Fernando"
uid2: "Alex"
这样你就可以只读出名字列表:
DatabaseReference usernamesRef = FirebaseDatabase.getInstance().getReference().child("usernames");
usernamesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
String uid = childSnapshot.getKey();
String name = childSnapshot.getValue(String.class);
}