0

我正在學習角色與firebase。我目前正在嘗試在firebase中創建一個用戶,但也會將該用戶添加到數據庫中,並使用他們的電子郵件和用戶標識。如何將用戶添加到數據庫並授權用戶

我有一個組件正在調用我的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) }); 

    }); 
    } 
} 

我沒有收到任何錯誤和寄存器功能創建用戶作爲一個註冊用戶,但我不知道如何將該用戶添加到數據庫的路徑'users /'

我知道返回的userData對象包含所有用戶信息,但我不知道在哪一部分,我會編寫代碼將該用戶添加到數據庫。我知道firebase最近剛剛變成了AngularFireList而不是AngularFireListObservables,這使得很難找到答案。

非常感謝您給予的幫助。一直在這方面工作了一段時間。

回答

1

我能回答我自己的問題。

我去了更詳細的學習承諾,並瞭解到承諾可以鏈接,然後功能。然後函數被調用以便寫入它們,只有在前一個承諾完成時纔會觸發。

所以在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) 
     }); 

    });