0

Below I have a signup code. This comes from a previous question I had about adding data to a user's table upon account creation. The code is as follows:

signup(){
  firebase.auth().createUserWithEmailAndPassword(useremail, userpassword)
   .then(function(response) {
      var updates = {};
      updates['/users/' + response.uid] = { email: useremail, password: userpassword, net_worth : 5000, username : 'Roy' };
      firebase.database().ref().update(updates);
});
}

To be clear, my schema should look something like:

email|''
password|''
username|'Roy'
net_worth|'5000'

Now I would like to retrieve this information and place it in my profile component, this time retrieving that data. At the moment what I have is the following:

Profile Component

export class ProfileComponent implements OnInit {
private usermail: string;
private net_worth: string;
constructor(){}

ngOnInit(){
  this.usermail = '';
  this.net_worth = '';
  var user = firebase.auth().currentUser;
  if (user != null) {this.usermail = user.email;}
}    
}

This code works for giving me the user's email from authentication, but it won't work in returning the other information in my schema, like net_worth and username. I imagine because it is stored in the database table, not the authentication function.

How would I call the user-generated ID to get the details of the specified user? Specifically, their username and net_worth?

1 Answer 1

4

Your database structure is like this

Users
    user-Id1
        email
        net_worth
        username

After successful login, you can query your db based on the response returned from firebase. uid, just like you can access email, there is also displayName which can take the place of username for you. For more info on managing users read here

To query your db, for other info.

var user = firebase.auth().currentUser;
if (user) {
    var getUserInfo = firebase.database().ref('users/' + user.uid);
    getUserInfo.once('value', function(snapshot) {
      console.log(snapshot.val()); //returns net_worth, etc
    });
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.