Firebase v3 createUserWithEmailAndPassword .then Promise

Ronnie Royston picture Ronnie Royston · Jul 21, 2016 · Viewed 21.7k times · Source

Firebase v3 Reference Guide indicates that createUserWithEmailAndPassword(email, password) returns firebase.Promise containing non-null firebase.User.

The Firebase v3 Authenticate with Firebase using Password-Based Accounts Guide shows the following example

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

My question is, I want to fire a function which adds the user to my users node in my Realtime Database. I want to include the users display name that I collected from the sites registration form. So, it seems like I want to do a .then and if the createUserWithEmailAndPassword method was successful I want to fire a function that writes the new user (with display name) to my Realtime Database users node.

How do I modify the example script to a .then style?

Answer

theblindprophet picture theblindprophet · Jul 21, 2016

Here is the correct use of then() and error handling with createUserWithEmailAndPassword:

firebase.auth().createUserWithEmailAndPassword(email, password).then(function(user) {
    var user = firebase.auth().currentUser;
    logUser(user); // Optional
}, function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
});

function logUser(user) {
    var ref = firebase.database().ref("users");
    var obj = {
        "user": user,
        ...
    };
    ref.push(obj); // or however you wish to update the node
}

I have another example here.