【问题标题】:How to add user to database and authorize user as well如何将用户添加到数据库并授权用户
【发布时间】:2017-10-18 21:27:26
【问题描述】:

我正在使用 firebase 学习 Angular。我目前正在尝试在 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) });

    });
  }
}

我没有收到任何错误,注册功能正在将用户创建为注册用户,但我不知道如何将该用户添加到路径 'users/' 中的数据库中

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

感谢您提供的任何帮助。已经为此工作了一段时间。

【问题讨论】:

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


    【解决方案1】:

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

    我更详细地研究了 Promise,并了解到 Promise 可以链接 .then 函数。 .then 函数按照它们的编写顺序被调用,并且仅在前一个 promise 完成时触发。

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

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 2022-01-21
      • 2013-05-20
      • 2017-12-28
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      相关资源
      最近更新 更多