【问题标题】:Saving additional user details in Firebase DB在 Firebase 数据库中保存其他用户详细信息
【发布时间】:2018-09-13 05:22:07
【问题描述】:

我已经通过几种方式看到了这个问题,但我无法对所提供的解决方案做出正面或反面。您能帮帮我,让我知道如何将其他用户字段推送到 Firebase 以便我以后可以调用它们吗?这是我目前正在做的事情:

    import { Component } from '@angular/core';
    import { NavController } from 'ionic-angular';
    import { GoogleAnalytics } from '@ionic-native/google-analytics';
    import { UserData } from '../../providers/user-data';
    import { User } from '../../interfaces/user-options';
    import { AngularFireAuth } from "angularfire2/auth";
    import { AngularFireDatabase } from 'angularfire2/database';
    import { LoginPage } from "../login/login";
    import { Storage } from '@ionic/storage';

    @Component({
      selector: 'page-user',
      templateUrl: 'signup.html'
    })
    export class SignupPage {

      user = {} as User;

      constructor(
        private afAuth: AngularFireAuth,
        private afDb: AngularFireDatabase,
        public navCtrl: NavController, 
        public userData: UserData,
        public storage: Storage,
        private ga: GoogleAnalytics,
      ) {}

      ionViewDidLoad() {
        var trackingId = 'UA-114720506-2';
        if (/(android)/i.test(navigator.userAgent)) { // for android 
          trackingId = 'UA-114720506-2';
        } else if (/(ipod|iphone|ipad)/i.test(navigator.userAgent)) { // for ios
          trackingId = 'UA-114720506-2';
        }      

        this.ga.debugMode();
        this.ga.startTrackerWithId(trackingId).then(()=> {
          console.log("GoogleAnalytics About Initialized with: " + trackingId);
          this.ga.trackView('Signup Screen');
          this.ga.enableUncaughtExceptionReporting(true)
          .then((_success) => {
            console.log("GoogleAnalytics enableUncaughtExceptionReporting Enabled.");
          }).catch((_error) => {
            console.log("GoogleAnalytics Error enableUncaughtExceptionReporting : " + _error)
          });
        });    

      }  

      async register(user: User){
        try {
          const result = await this.afAuth.auth.createUserWithEmailAndPassword(user.email, user.password)
            .then(
                (success) => {
                  console.log(result); 
                  success.updateProfile({
                    displayName: user.displayName,
                    photoURL: "https://images-na.ssl-images-amazon.com/images/I/41Ee94UeiAL._SY355_.jpg"
                  })

                  this.ref.child(user.uid).set(user).then
                  this.navCtrl.setRoot(LoginPage);
                });
            }
            catch(e) {
              console.error(e);
            }  
        }

    }

      ref() {
        this.afDb.database().ref().child(user);
      }

这是我的用户数据

    export interface User {
      displayName: string,
      email: string,
      password: string,
      company: string,
      phoneNumber: string,
      position: string,
    }

这显然行不通。有人可以帮忙吗?谢谢!

【问题讨论】:

标签: angular firebase ionic-framework ionic2 ionic3


【解决方案1】:

您并没有具体说明到底出了什么问题以及代码为什么不起作用,但是在 Firebase 保存的内容之上保留有关用户的更多信息的一种方法是在数据库中创建一个新分支,并且将用户信息存储在那里,即:

/userDetails/${uid}/

那么,假设userData是一个存储用户数据的对象,你可以使用updateset

firebase.database().ref("userDetails/"+user.uid).set(userData)

一些旁注

-从不存储用户的密码(而是存储其哈希值)。只需谷歌主题

-如果没有必要,不要使用 Angular Fire。从长远来看,您将不得不担心它的兼容性和维护。 Firebase web sdk 有你需要的一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2017-03-08
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多