按子节点获取 Firebase 节点



如果我有一个这样设置的数据库

-users
  -uId0
    -Name: "Bill"
  -uId1
    -Name: "Bob"
  -uId2
    -Name: "Dave"

如果名称子以 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
    }
});

最新更新