如何将用户添加到数据库并授权用户

时间:2017-10-18 21:27:27

标签: angular typescript firebase firebase-realtime-database firebase-authentication

我正在用firebase学习角度。我目前正在尝试在firebase中创建一个用户,但也会使用他们的电子邮件和用户ID将该用户添加到数据库中。

我有一个调用我的firebase服务的组件。

// register.component.ts

    import { FirebaseService } from '../../services/firebase.service';
import { Component, OnInit } from '@angular/core';


@Component({
  selector: 'app-register',
  templateUrl: './register.component.html',
  styleUrls: ['./register.component.css']
})
export class RegisterComponent implements OnInit {

  username:string;
  email:string;
  password:string;
  constructor(
   private firebaseService:FirebaseService
  ) {

  }

  ngOnInit() {
  }

  OnSubmit()
  {
    this.firebaseService.register(this.username,this.email,this.password)
    .then( (res) =>{
      console.log("firebase has registered the user: "+ res);
    })
    .catch( (err)=>{
      console.log("There was an error registering: "+ err.message);
    });

  }
}

这是服务 firebase.service.ts

import { Injectable } from '@angular/core';
import { AngularFireDatabase, AngularFireList } from "angularfire2/database"; 
import{ AngularFireAuth} from 'angularfire2/auth';
import {Observable} from 'rxjs/Observable';
import * as firebase from 'firebase/app';

@Injectable()
export class FirebaseService {
 users: AngularFireList<any[]>;

  constructor(
    public afAuth: AngularFireAuth,
    public  af: AngularFireDatabase
  ) {
    this.users = af.list('users/');
   }

  register(username:string, email:string, password:string)
  {
    return new Promise ((resolve, reject) =>{
      this.afAuth.auth.createUserWithEmailAndPassword(email,password)
      .then( (userData) => {resolve(userData), 
      err => reject(err) });

    });
  }
}

我没有收到任何错误,注册功能是以注册用户身份创建用户,但我不知道如何将该用户添加到路径&#39; users /&#39;

我知道返回的userData对象包含所有用户信息,但我不知道在.then部分中我将编写代码以将该用户添加到数据库的位置。我知道firebase刚刚更改为AngularFireList而不是AngularFireListObservables,这使得很难找到答案。

感谢您提供任何帮助。已经有一段时间了。

1 个答案:

答案 0 :(得分:2)

我能够回答我自己的问题。

我去了解更详细的承诺,并了解到一个承诺可以链接。然后功能。 。然后按照编写函数的顺序调用函数,并且仅在前一个函数完成时触发函数。

所以在firebaseService.ts文件中。

  register(username:string, email:string, password:string)
  {
    return new Promise ((resolve, reject) =>{
      this.afAuth.auth.createUserWithEmailAndPassword(email,password)
      .then( (userData) => {resolve(userData), 
      err => reject(err) 
        return userData}) //make sure to return the parameters you want to use in the next .then call.
      .then( (userData) => {
        console.log("The userData is +: " + userData.uid)
      });

    });