2016-12-20 2 views
1

Как я могу преобразовать этот код (Promise):Angular2 Обещания Async/ОЖИДАНИЕ

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); 
      }) 
} 

В этом (асинхронном/ждать):

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; 
    } 
} 

Как я могу получить user.uid (который зарегистрированный пользователь uid)? В обещаниях это так просто, потому что мне просто нужно передать аргумент (пользователь). Спасибо, за помощь:)

ответ

3

Как я могу получить user.uid ...

user возвращается выражением await, поэтому добавьте let user = (или const user =) перед ним:

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; 
    } 
} 
+0

большое спасибо! :) – qwerty1234567

Смежные вопросы