Darryl Fernandes
Darryl Fernandes

Reputation: 161

Unable to retrieve Data of CurrentUser in Firebase Android

With reference to this Question I am trying to get the Current UserData from FireBase Database using Android.

This is my code:

auth = FirebaseAuth.getInstance();
    databaseReference = FirebaseDatabase.getInstance().getReference();
    FirebaseUser user = auth.getCurrentUser();

    databaseReference.child("users").child(user.getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot){
            String userID = (String) dataSnapshot.child("name").getValue();
            Log.d("TAG", "Name: " + userID);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {}

    });

Here everytime I run the App it gives me NULL as result even though a user has logged in.

LogCat:

D/TAG: Name: null

My DataBase: enter image description here

Please Help me retrieve the name node of the database.

Upvotes: 0

Views: 288

Answers (2)

Anupam
Anupam

Reputation: 2853

Get the name by implementing like this -

 FirebaseAuth auth = FirebaseAuth.getInstance();
            FirebaseUser user = auth.getCurrentUser();
            String uId = firebaseAuth.getCurrentUser().getUid() + "";
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            DatabaseReference myRef = database.getReference("users");

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

                                boolean hasId = dataSnapshot.hasChild(uId);

                                if(hasId){

                                    String name = dataSnapshot.child("name").getValue().toString() + "";
                                }
                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {
                            }
                        }); 

It should work fine. Hope it helps!

Upvotes: 1

Peter Haddad
Peter Haddad

Reputation: 80914

In your database, you are not using the userid. This id -Li1boDBTPV_59sXL7XI is random id generated by the push() method and thats why you get null.

You need to change how you are adding the data to the following:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
FirebaseAuth auth     = FirebaseAuth.getInstance();
FirebaseUser user     = auth.getCurrentUser();

ref.child(user.getUid()).child("name").setValue("Darryl Fernand");
ref.child(user.getUid()).child("email").setValue("[email protected]");
ref.child(user.getUid()).child("gender").setValue("male");

Then you will be able to retrieve the data using the userId.

Upvotes: 2

Related Questions