如何迭代可观察到的 firebase2 列表?

How to iterate over a firebase2 list observable?

我有一个可观察对象列表,我正在尝试迭代这些对象以将列表对象 属性 与局部变量进行比较。

我可以在模板中遍历列表中的对象,但在组件逻辑中看不到如何操作。

如何在模板之外执行此操作?

这是迄今为止我最接近工作的迭代器。

constructor(af: AngularFire) {
    this.competitors = af.database.list('/competitors');
}
this.competitors.forEach(competitor) {
    console.log(competitor);
}

很抱歉,如果这个问题构造不当,我对 Angular2 和 Firebase 还是很陌生。

this.competitors.forEach(competitor) {
    var competitorValue = competitor.val();
    console.log(competitorValue);
    competitorValue.forEach(sub){
        console.log(sub.val());
  }
}

这将让您解析所有分支。

您在这里使用的是 Observables 而不是普通集合。这意味着您必须使用 Observable 原语,并且 this.competitors 上的简单循环将不起作用。

这个这个:

this.competitors.subscribe(competitor => console.log(competitor));

顺便说一下,有一个命名约定,在末尾带有 $ 来命名 Observables,所以它看起来像下面这样:

this.competitors$ = af.database.list('/competitors');

和:

this.competitors$.subscribe(competitor => console.log(competitor));

这将记录所有竞争对手。如果要遍历元素,请执行以下操作:

this.competitors.subscribe(
    competitors => {
        competitors.map(competitor =>
            console.log(competitor)
        )
    });

在订阅中用next迭代:

this.transactions.subscribe({
  next(competitors) {
    competitors.forEach(competitor => {
         console.log(competitor);
    });
  },
  error(err) { console.log('errors already caught... will not run'); }
})