user6372887
user6372887

Reputation:

Angular2 Promise to Async/Await

How can I transform this code ( Promise ):

registerUser(formData) {
    firebase.auth().createUserWithEmailAndPassword(formData.email,formData.passwords.password)
            .then((user) => {
                firebase.database().ref(`/users/${user.uid}`).set({
                    id: user.uid,
                    email: formData.email
                })
                this.routing.navigate(['/login']);
            }).catch((error) => {
                console.log(error); 
            })
}

Into this one ( async / await ):

async registerUser(formData){
    try{
        await firebase.auth().createUserWithEmailAndPassword(formData.email,formData.passwords.password);
        firebase.database().ref(`/users/${user.uid}`)
            .set({id: user.uid,email: formData.email});
        this.routing.navigate(['/login']);
        return true;
    }catch(error){
        return false;
    }
}

How can I get user.uid ( which is the registered user uid )? In promises it's so easy, because i just have to pass argument (user) to then. Thanks, for help: )

Upvotes: 1

Views: 1058

Answers (1)

T.J. Crowder
T.J. Crowder

Reputation: 1073978

How can I get user.uid...

user is returned by the await expression, so add let user = (or const user =) in front of it:

async registerUser(formData){
    try{
        const user = await firebase.auth().createUserWithEmailAndPassword(formData.email,formData.passwords.password);
    //  ^^^^^^^^^^^^^
        firebase.database().ref(`/users/${user.uid}`)
            .set({id: user.uid,email: formData.email});
        this.routing.navigate(['/login']);
        return true;
    }catch(error){
        return false;
    }
}

Upvotes: 3

Related Questions