在Firebase DB

时间:2018-04-03 19:15:42

标签: angular firebase ionic-framework ionic2 ionic3

我已经看到过这方面的问题,但我无法提供所提供解决方案的正面或反面。你能帮助我,让我知道如何将其他用户字段推送到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,
    }

这显然不起作用。有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您并不具体说明哪些错误以及代码无法正常工作,但在Firebase保存的基础上保留用户的更多信息的一种方法是在数据库中创建新分支,以及在那里存储用户信息,即:

/userDetails/${uid}/

然后,假设userData是存储用户数据的对象,您可以使用updateset

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

一些附注

- 不存储用户的密码(改为存储其散列值)。只是谷歌的主题

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