AngularFire2如何创建用户(姓名,电子邮件,密码)

时间:2016-12-15 10:19:54

标签: database angular registration 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);
            })
    }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:8)

'this.af.auth.createUser'只接受电子邮件和密码。此外,您不能在Firebase的内置用户配置文件中拥有自定义属性(名称或姓氏)。

唯一可用的属性是:

  • 的displayName
  • 电子邮件
  • photoURL
  • providerId
  • UID

因此,如果您愿意,您肯定可以将其存储在'displayName'中,否则您将不得不使用Firebase实时数据库来存储其他用户数据。我相信设置'displayName'你必须让这个人登录。

要使用displayName,您可以执行以下操作(一旦您拥有已登录的用户):

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

(没有机会测试上面的代码)。