web-dev-qa-db-fra.com

Firebase v3 createUserWithEmailAndPassword .then Promise

Guide de référence Firebase v indique que createUserWithEmailAndPassword(email, password) renvoie firebase.Promise contenant une valeur non nulle firebase.User.

Firebase v3 Authentifier avec Firebase en utilisant le Guide des comptes basés sur un mot de passe montre l'exemple suivant

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

Ma question est, je veux lancer une fonction qui ajoute l'utilisateur à mon nœud users dans ma base de données en temps réel. Je souhaite inclure le nom d'affichage des utilisateurs que j'ai collecté à partir du formulaire d'inscription des sites. Donc, il semble que je veux faire un .then et si la méthode createUserWithEmailAndPassword a réussi, je veux déclencher une fonction qui écrit le nouvel utilisateur (avec le nom d'affichage) dans mon nœud de base de données en temps réel users.

Comment modifier l'exemple de script en .then style?

17
Ron Royston

Voici l'utilisation correcte de then() et la gestion des erreurs avec 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
}

J'ai un autre exemple ici .

32
theblindprophet

Voici ce que j'ai fait et cela a fonctionné.

        function registerUsername(email,password,displayName){
            firebase.auth().createUserWithEmailAndPassword(email, password).then(function(value) {
                console.log(value);
                }).catch(function(error) {
                    console.log(error);
                });
        }
4
Ron Royston

Vérifiez cela, vous devez lire la charge utile ou l'instantané (terme Firebase)

firebase.auth().createUserWithEmailAndPassword(credentials.email, credentials.password)
                .then((authData) => {
                    console.log("User created successfully with payload-", authData);
                    //Write code to use authData to add to Users
                }).catch((_error) => {
                    console.log("Login Failed!", _error);
                })
3
Mithun Pattankar