使用observable从FirebaseListObservable中检索项目

时间:2017-01-06 02:48:46

标签: angular firebase firebase-realtime-database

import { Injectable } from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';

import 'rxjs/add/operator/find';



@Injectable()
export class TeamService {
teams: FirebaseListObservable<any> = this.af.database.list('/teams', {       preserveSnapshot: true });
constructor(public af: AngularFire) {

}

TeamByKey(key) {
    return this.teams.find((teams: any) => {
        for (let team of teams) {
            if (team.key == key)
                return true;
        }
        return false;
    })
}
}

我想在找到好钥匙后找回团队。但是函数返回整个列表。

1 个答案:

答案 0 :(得分:0)

AngularFire2 list observable发出的值是一个数组。 find运算符会查找与谓词匹配的值,因此当您找到team并返回true时,find运算符会考虑teams值已被发现,这就是为什么要排出整个团队名单的原因。

要仅发出匹配的小组,请使用map运算符和Array.prototype.find方法:

import 'rxjs/add/operator/map';
...
TeamByKey(key) {
    return this.teams.map((teams: any[]) => teams.find((team: any) => team.key === key));
}