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;
})
}
}
我想在找到好钥匙后找回团队。但是函数返回整个列表。
答案 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));
}