web-dev-qa-db-ja.com

Firebase v3 createUserWithEmailAndPassword .then Promise

Firebase v3リファレンスガイド は、createUserWithEmailAndPassword(email, password)がnull以外のfirebase.Promiseを含むfirebase.Userを返すことを示します。

Firebase v3 パスワードベースのアカウントガイドを使用してFirebaseで認証する は、次の例を示しています

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

私の質問は、リアルタイムデータベースのusersノードにユーザーを追加する関数を起動することです。サイト登録フォームから収集したユーザー表示名を含めたい。したがって、.thenを実行したいようで、createUserWithEmailAndPasswordメソッドが成功した場合は、新しいユーザー(表示名付き)をRealtime Database usersノード。

サンプルスクリプトを.thenスタイルに変更するにはどうすればよいですか?

17
Ron Royston

then()の正しい使用法と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
}

別の例 here があります。

32
theblindprophet

ここに私がやったこととそれが働いた。

        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

これを確認して、ペイロードまたはスナップショットを読み取る必要があります(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