Skip to content
Advertisement

How to get a child value if another child value matches in Firebase?

My Database Structure is:

{
"Users" : {
"KTTbTIq2A4aZcjKPSYlZhrBiDwD3" : {
  "Email" : "g2@g.com",
  "ID" : "KTTbTIq2A4aZcjKPSYlZhrBiDwD3",
  "UserName" : "GokulNew2"
},
"ovxZPZeyy2VlZUP1K0vv9VtiThu1" : {
  "Email" : "g1@g.com",
  "ID" : "ovxZPZeyy2VlZUP1K0vv9VtiThu1",
  "UserName" : "GokulNew1"
   }
  }
}

In this structure, I need to get “ID” (which is autogenerated) as “ovxZPZeyy2VlZUP1K0vv9VtiThu1” if the “UserName” matches to “GokulNew1”. And I need to store the ID in String ID.

And My Code is,

private DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
String Id;
String Name = "GokulNew1";

reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            recyclerId= snapshot.child("ID").toString();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            throw error.toException();
        }
    });

Advertisement

Answer

To get the key of the node (ovxZPZeyy2VlZUP1K0vv9VtiThu1) if the “UserName” matches to “GokulNew1”, please use the following lines of code:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("Users");
Query queryByUserName = usersRef.orderByChild("UserName").equalTo("GokulNew1");
queryByUserName.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            for (DataSnapshot uidSnapshot : task.getResult().getChildren()) {
                String uid = uidSnapshot.getKey();
                Log.d("TAG", uid); //Do what you need to do with the uid
            }
        } else {
            Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});

The result in the logcat will be:

ovxZPZeyy2VlZUP1K0vv9VtiThu1
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement