我正在用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,这使得很难找到答案。
感谢您提供任何帮助。已经有一段时间了。
答案 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)
});
});