将额外的displayName添加到createUserWithEmailAndPassword方法

时间:2019-03-20 10:14:25

标签: angular firebase firebase-authentication

我想添加一个额外的文件,以便将用户名插入Firebase数据库中,然后进行检索,但是我不知道是否有办法进行此操作。这是我的标记代码

<form [formGroup]="registerForm">
        <div class="form-group">
          <label>Name</label>
          <input type="text" formControlName="DisplayName" class="form-control">
        </div>       
        <div class="form-group">
          <label>Email address</label>
          <input type="email" formControlName="email" class="form-control">
        </div>
        <div class="form-group">
          <label>Password</label>
          <input type="password" class="form-control" formControlName="password">
          <label class="error">{{errorMessage}}</label>
          <label class="success">{{successMessage}}</label>
        </div>
        <button type="submit" (click)="tryRegister(registerForm.value)" class="btn btn-primary">Register</button>
      </form>

这是我的打字稿代码,用于将用户注册到数据库

tryRegister(value){
     this.authService.doRegister(value)
     .then(res => {
       console.log(res);
       this.errorMessage = "";
       this.successMessage = "Your account has been created";
     }, err => {
       console.log(err);
       this.errorMessage = err.message;
       this.successMessage = "";
     });
   }

doRegister(value) {
    return new Promise<any>((resolve, reject) => {
      firebase.auth().createUserWithEmailAndPassword(value.email, value.password)
      .then(res => {
        resolve(res);
      }, err => reject(err));
    });
  }

谢谢...

1 个答案:

答案 0 :(得分:3)

您无法将额外的值传递给仅需要电子邮件和密码的功能。 您想要的东西只能通过在数据库中注册用户来实现。 在这种情况下,您只需要对数据库进行用户身份验证。 试试这个:

 this.auth.signUp(this.user.email, this.user.password).then(res => {
    //get data from database
    this.database.doc('tableName/' + res.user.uid).set(data).then(resp => {
})});

在身份验证的同时创建用户。