2016-12-15 64 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

相关问题