如何在Android的Firebase数据库中根据特定属性进行查询?

时间:2018-06-27 01:26:06

标签: android firebase-realtime-database

这些是我的数据库规则:

"rules": {
".read": "true",
"users": {
  "$uid": {
    ".read": "true",
    ".write": "$uid === auth.uid"
  }
},

这是我的桌子的样子:

users
4BBlhgTyY3fD3jGYnV7SQavDasM2
     DateOfBirth: --
     Email: 
     Name: 
     PhoneNo: 
     Sex: 
     UserType: 
4zTTI5HajjNOlsfnzvQN9FoDshN2
     DateOfBirth: 
     Email: 
     Name: 
     PhoneNo: 
     Sex: 
     UserType: 

我正在尝试基于特定的UserType来查询和查找节点,例如,当UserType为“ Child”时,它没有给我任何结果,并且datasnapshot为null。我究竟做错了什么?我该怎么解决?

1 个答案:

答案 0 :(得分:0)

这是我所做的更改,现在可以使用:

查询查询= mDatabase.child(“用户”).orderByChild(“ UserType”)。equalTo(患者);

    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot!=null) {
                Log.e("TAG", String.valueOf(dataSnapshot.child("uid").child("Name")));
                int i=0;
                for(DataSnapshot snapshot : dataSnapshot.getChildren()){
                    String userName = snapshot.child("Name").getValue(String.class);
                    Pt.add(userName);

                }
            }
            else
                Toast.makeText(getApplicationContext(), "Datasnapshot is null", Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e(TAG, "onCancelled: " + databaseError.getMessage());
        }

    });