Android 通过子节点获取Firebase节点
如果我有一个这样设置的数据库Android 通过子节点获取Firebase节点,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,如果我有一个这样设置的数据库 -users -uId0 -Name: "Bill" -uId1 -Name: "Bob" -uId2 -Name: "Dave" 如果有名称child以B开头,如何获取uId元素。 查询应该返回这样的结果吗 -uId0 -Name: "Bill" -uId1 -Name: "Bob" 谢谢 要实现这一点,请使用以下代码: DatabaseReference myReference = Fire
-users
-uId0
-Name: "Bill"
-uId1
-Name: "Bob"
-uId2
-Name: "Dave"
如果有名称child以B开头,如何获取uId元素。
查询应该返回这样的结果吗
-uId0
-Name: "Bill"
-uId1
-Name: "Bob"
谢谢 要实现这一点,请使用以下代码:
DatabaseReference myReference = FirebaseDatabase.getInstance().getReference();
myReference.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//looping all your users
for (DataSnapshot messageSnapshot:dataSnapshot.getChildren())
{
name = (String)messageSnapshot.child("Name").getValue();
if (name.toLowerCase().contains("b")) {
//u can save your name with 'b' string here
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("users");
usersRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String uId = (String) ds.getKey();
DatabaseReference uIdRef = FirebaseDatabase.getInstance().getReference().child("users").child(uId);
uIdRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = (String) dataSnapshot.child("Name").getValue();
if (name.matches("^[B].*$")) {
System.out.println(name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
uhg这是一种痛苦的方式,我想换一个新的方式,比挖用户节点的洞更好。谢谢你。