由儿童获取Firebase节点

时间:2017-05-18 00:49:16

标签: android firebase firebase-realtime-database

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

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

如果名字child以B开头,如何获取uId元素? 查询应该返回这样的东西吗?

  -uId0
    -Name: "Bill"
  -uId1
    -Name: "Bob"

谢谢!

2 个答案:

答案 0 :(得分:0)

    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) {

          }
     });

答案 1 :(得分:0)

要实现此目的,请使用以下代码:

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
    }
});