【问题标题】:Retrieve user info from Firebase and display in app从 Firebase 检索用户信息并在应用中显示
【发布时间】:2018-06-17 21:23:55
【问题描述】:

我有一个个人资料页面,我正在尝试创建一个函数,retrieveUserData,它将从 firebase 检索值,将它们分配给我可以用来在 html 文件中显示的变量。

import { Component, OnInit, ViewChild } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { HomePage from '../../../pages/home/home';
import { AngularFireDatabase } from 'angularfire2/database';
import { Profile } from '../../../models/profile';
import { AngularFireAuth } from 'angularfire2/auth';


@Component({
  selector: 'page-profile',
  templateUrl: 'profile.html',
})
export class ProfilePage implements OnInit {

  name: string = "";
  hometown: string = "";

  constructor(private afDatabase: AngularFireDatabase, private afAuth: AngularFireAuth, public navCtrl: NavController, private navParams: NavParams) {

  }

  ngOnInit(){

  }

  onGoToHome(){
    this.navCtrl.push(HomePage)
  }

  retrieveUserData(){
    var userId = this.afAuth.app.auth().currentUser.uid;


  }

}

我正在尝试从 firebase 数据库中提取某些信息以将值分配给 name 和 hometown,然后在 html 文件中使用它们。我尝试使用this doc 中的以下示例,但语法不适用于我。没有任何语法被识别。我知道这是非常微不足道的。有人可以帮助我举一个明确的例子来说明获取这些数据并使用它的正确方法。 firebase 中的表称为“配置文件”。

【问题讨论】:

    标签: angular firebase ionic-framework firebase-realtime-database


    【解决方案1】:

    我认为问题源于您引用 Firebase 文档 - 当您使用 Angularfire2 包时...查看 Angularfire2 documentation here

    同时,我将提供一个来自我的一个项目的示例,我通过 Angularfire2 查询实时数据库以帮助您:

      this.afDatabase.database.ref(`profile/${userId }`).once('value').then( userDetailsAsObject => {
    
        let userDetails = userDetailsAsObject.val() ? userDetailsAsObject.val() : {};
        console.log(userDetails);
    
      }).catch( err => { 
        console.log('Error pulling /profile table inside functionName() inside componentName.component.ts'); 
        console.log(err); 
      });
    

    编辑 cmets 中的每个附加问题: 假设你有这种数据库结构......

    profile
       |
       |--12bd02nasBD0Bd93nbD    (userID)
              |
              |--name:"John Smith"
              |
              |--hometown:"Paris, France"
    

    然后数据库查询将 12bd02nasBD0Bd93nbD 节点作为一个大对象返回...因此您可以像访问任何其他 JavaScript 对象一样访问该对象的属性(dot notation or bracket notation )

    this.name = userDetails['name'];
    this.hometown = userDetails['hometown'];
    

    然后只需在您的 HTML 中引用 namehometown 变量。

    【讨论】:

    • 谢谢!我看到数据显示在控制台中。你知道我如何定位特定的数据吗?所以在这里我得到了 name 和 hometown 的值,但是如何将它们分配给我声明的变量,以便我可以在 HTML 中使用它们?还是在 html 本身中这样做更好。
    • 我更新了我的答案以更好地解释这一点。是否声明单独的namehometown 变量是个人偏好...或者您可以创建一个userDetails 变量然后在HTML 中引用userDetails.nameuserDetails.hometown...您的偏好。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多