Reputation: 161
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
Please Help me retrieve the name node of the database.
Upvotes: 0
Views: 288
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
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