Devansh Kumar
Devansh Kumar

Reputation: 1562

Querying in Firebase with equalTo condition not working

I have database structure like this in Firebase

enter image description here

I want to search a search on this structure based on key number and get the parent key in return. Meaning if i search for 8860124421 then i should get -KTEtSR7chN8te1WaW-W in return .

I am doing it like this in android -

final String number = "8860124421";

DatabaseReference global_user_entry_ref = ApplicationContext.getGlobalDataBaseReference()
                .child("User-Entry-2").getRef();  //Reference to User-Entry-2 

Query query = global_user_entry_ref.orderByChild("number").equalTo(number);  

            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    if(dataSnapshot != null){

                        for(DataSnapshot friend: dataSnapshot.getChildren()){

                            String firebase_id = (String) friend.getKey();

                            Log.d("ContactSync","handle number "+firebase_id+" "+number+" "+friend);
                        }

                        Log.d("ContactSync","handle number outer "+dataSnapshot);
                        //user exist
                    }
                    else {
                        //user_does_not_exist
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    Log.d("ContactSync","handle number oncancel "+databaseError.getMessage());
                }
            });

But I am not getting proper result , dataSanpshot in onDataChange looks like this -

DataSnapshot { key = User-Entry-2, value = null }

but i want to get dataSnapShot with parent of number key.

Please help , Thanks in advance

Upvotes: 1

Views: 2050

Answers (1)

Devansh Kumar
Devansh Kumar

Reputation: 1562

As @Frank van Puffelen stated in comments , the problem was that i was comparing a number from code with a string in the database , which does not match , Therefore the solution is to change

final String number = "8860124421"; 

to

final long number = 8860124421;

Upvotes: 1

Related Questions