我在firebase上有以下数据库:
{
"pops" : [ {
"description" : "22",
"number" : "13",
"serie" : "0",
"title" : "luke skywalker [jedi]"
}, {
"description" : "Test",
"number" : "55",
"serie" : "2",
"title" : "Bilbo"
}, {
"description" : "le second porteur d'anneau",
"number" : "13",
"serie" : "2",
"title" : "Frodon"
}],
"series" : [ {
"description" : "La grande saga des étoiles",
"title" : "Star Wars"
}, {
"description" : "L'autre grande saga des étoiles",
"title" : "Star Trek"
}, {
"description" : "Le seigneur des anneaux",
"title" : "LOTR"
} ]
}
我具有以下组件,该组件必须仅显示所选系列中的“流行音乐”:
export class SingleSerieComponent implements OnInit {
serie: Serie;
serieSubscription: Subscription;
popsFromSerie: Pop[];
popFromSerieSubscription: Subscription;
constructorId: number;
constructor(private route: ActivatedRoute, private serieService: SeriesService,
private router: Router,private popsService: PopsService) {
route.params.subscribe(val => {
this.serie = new Serie('');
const id = this.route.snapshot.params['id'];
this.constructorId = id;
this.serieService.getSingleSerie(+id).then(
(serie: Serie) => {
this.serie = serie;
}
);
this.popsService.getPopsBySerieId2(this.constructorId);
this.popFromSerieSubscription = this.popsService.popFromSerieSubject.subscribe(
(pops : Pop[]) => {
this.popsFromSerie = pops;
}
);
});
}
}
getPopsBySerieId2方法:
getPopsBySerieId2(id: number){
firebase.database().ref('/pops').orderByChild('serie').equalTo(id).on('value',(data: DataSnapshot)=>{
this.popsFromSerie = data.val() ? data.val():[];
this.emitPopsFromSerie();
}
);
}
当我尝试为ID为'0'的意甲检索数据时,它返回一个数组,并显示数据。但是对于任何其他数据,当系列ID不等于0时,firebase方法将返回一个对象。
ID为0的数组响应,显示信息:
[
{
"description": "55",
"number": "11",
"serie": "0",
"title": "boba fett"
},
{
"description": "22",
"number": "13",
"serie": "0",
"title": "luke skywalker [jedi]"
}
]
另一个ID的对象响应:
{
"9": {
"description": "L'homme araignée",
"number": "45",
"serie": "4",
"title": "Spiderman"
},
"10": {
"description": "Cap sans son masque",
"number": "45",
"serie": "4",
"title": "Steve Rogers"
}
}