代码之家  ›  专栏  ›  技术社区  ›  Tree55Topz

从firebase数据库表检索列表中的数据

  •  0
  • Tree55Topz  · 技术社区  · 7 年前

    我的firebase数据库中有一个配置文件表,如下所示 enter image description here

    我要做的是从这个表中为profile的每个实例获取某些值并在ui中列出它们。我发现了另一个堆栈溢出的帖子,解决方案是这样的…

    这是home.ts文件(我将在这里显示所有用户)

    import { Component } from '@angular/core';
    import { NavController, ToastController, NavParams } from 'ionic-angular';
    import { AngularFireAuth } from 'angularfire2/auth';
    import { AngularFireDatabase, AngularFireObject } from 'angularfire2/database';
    import { Profile } from '../../models/profile';
    import { Observable } from 'rxjs/Observable';
    import { HttpClient } from'@angular/common/http';
    
    import firebase from 'firebase';
    
    @Component({
      selector: 'page-home',
      templateUrl: 'home.html'
    })
    export class HomePage {
    
      profiles:Observable<any>;
      constructor(public http: HttpClient, private toast: ToastController, public afDatabase: AngularFireDatabase, private afAuth: AngularFireAuth, public navCtrl: NavController, public navParams: NavParams) {
        let profiles = this.afDatabase.list('profile').valueChanges();
      }
      }
    

    然后在home.html文件中,我试图这样显示它。

    <ion-list>
          <ion-item *ngFor="let profile of profiles | async">
            <p>{{profile.bandName}}</p>
            <p>{{profile.bandHandle}}</p>
          </ion-item>
      </ion-list>
    

    我得到0个错误,但绝对没有填充。用户界面上没有显示任何值!有什么可能出错的想法吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Wesley Coetzee    7 年前

    您试图将该值存储到块范围的变量中 profile 是的。这个变量在html中无法通过这种方式访问。

    export class HomePage {
      public prolfies: any;
    
      constructor(public http: HttpClient, private toast: ToastController, public afDatabase: AngularFireDatabase, private afAuth: AngularFireAuth, public navCtrl: NavController, public navParams: NavParams) {
        afDatabase.list('profile')
          .valueChanges()
          .subscribe((data) => {
            this.profile = data;
          });
      }
    }
    
        2
  •  0
  •   Maxence Maisonnat    7 年前

    我没试过,但我想你必须订阅你的名单。

    尝试:

    let profiles = this.afDatabase.list('profile').valueChanges()
       .subscribe(value => {
          this.profiles = value;
       })
    

    如果它不起作用,你能在你的ngoninit()中做到吗?

    ngOnInit(
       console.log(this.profiles)
    )
    

    然后把你的结果贴在这里