Firebase orderByChild第一次返回数组,第二次返回objec

时间:2019-07-17 06:41:58

标签: angular typescript firebase firebase-realtime-database

我在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"
  }
}

0 个答案:

没有答案