【问题标题】:Retrieving data in a list from firebase database table从firebase数据库表中检索列表中的数据
【发布时间】:2018-12-09 05:16:18
【问题描述】:

我的 firebase 数据库中有一个 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 个错误,但绝对没有填充任何内容。 UI 上没有显示任何值!这里有关于可能出现什么问题的任何想法吗?

【问题讨论】:

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


    【解决方案1】:

    您正在尝试将值存储到块作用域变量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;
          });
      }
    }
    

    【讨论】:

    • 这似乎不起作用.. 得到一堆语法错误。 valueChanges() 似乎不允许 then()
    • 好吧,那是我的错,这是一个可观察的。我已经更新了答案
    • 啊!这确实让我更进一步,但是我现在有一个 InvalidPipe 错误。看起来我试图从配置文件的每个实例访问的两个值是作为 [Object, Object]
    • 很好,享受 Angular :)
    • 非常感谢您的解决方案,我浪费了很多时间挠头:D
    【解决方案2】:

    没试过,但我认为你必须订阅你的列表。

    试试:

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

    如果它不起作用,您可以在 ngOnInit() 中执行此操作

    ngOnInit(
       console.log(this.profiles)
    )
    

    然后把你的结果粘贴到这里

    【讨论】:

    • 我尝试了以下方法,但我认为 Observable 的这种语法不正确。我不反对不同的方式,但我收到以下错误“类型 {}[] 不可分配给 Observables{}[]”。另外,您的示例是否也应该由构造函数构建?如果你有这个例子和更多的代码,那会很有帮助!另外,我从控制台得到的原始代码是“未定义”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2017-05-26
    • 2021-03-08
    • 2018-10-21
    • 1970-01-01
    相关资源
    最近更新 更多