2016-12-15 62 views
3

我知道如何使用電子郵件和密碼創建用戶,但我怎樣才能創建他的名字和姓? 這是我的代碼形式的電子郵件地址和密碼AngularFire2如何創建用戶(名稱,姓氏,電子郵件,密碼)

registerUser(formData) { 
    if(formData.valid) { 
     this.af.auth.createUser({ 
      email: formData.value.email, 
      password: formData.value.password, 
      }).then((success) => { 
       this.routing.navigateByUrl('/login'); 
      }).catch((error) => { 
       console.log(error); 
      }) 
    } 
} 

我不能只是寫

registerUser(formData) { 
    if(formData.valid) { 
     this.af.auth.createUser({ 
      email: formData.value.email, 
      password: formData.value.password, 
      name: formData.value.name, // this is error :(
      surname: formData.value.surname, // this is error :(
      }).then((success) => { 
       this.routing.navigateByUrl('/login'); 
      }).catch((error) => { 
       console.log(error); 
      }) 
    } 
} 

任何想法?

回答

6

'this.af.auth.createUser'只接受電子郵件和密碼。此外,您不能在Firebase的內置用戶個人資料中擁有自定義屬性(姓名或姓氏)。

唯一可用的屬性是:

  • 顯示名
  • 電子郵件
  • photoURL
  • providerId
  • UID

所以,你絕對可以將其存儲在如果 '顯示名'你想要的,否則你將不得不使用t他使用Firebase實時數據庫來存儲其他用戶數據。我認爲,設置「顯示名」你必須在已簽署的人

要使用顯示名,你可以做以下的(一旦你有用戶簽字):

user.updateProfile({ 
    displayName: "Name here" 
}).then(() => { 
    // Update successful 
} 

要使用Firebase實時數據庫:

registerUser(formData) { 
    if(formData.valid) { 
     this.af.auth.createUser({ 
      // Create user 
      email: formData.value.email, 
      password: formData.value.password 
     }).then((user) => { 
      // User created now create the database user 
      return this.af.database.object(`/users/${user.uid}`).update({ 
       name: formData.value.name, 
       surname: formData.value.surname 
      }); 
     }).then(() => { 
      // Success 
      this.routing.navigateByUrl('/login'); 
     }).catch((error) => { 
      // Error 
      console.log(error); 
     }); 
    } 
} 

(沒有機會測試上述代碼)。

+1

非常感謝你:) – qwerty1234567

相關問題