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这是一种痛苦的方式,我想换一个新的方式,比挖用户节点的洞更好。谢谢你。