Firebase AngularFire查询非规范化数据

Firebase AngularFire查询非规范化数据,firebase,angularfire,firebase-realtime-database,angularfire2,Firebase,Angularfire,Firebase Realtime Database,Angularfire2,我在使用firebase查询数据时遇到问题 我有下面的结构 用户有一些宠物,我想在“宠物”节点中获取用户所有宠物的列表。 我采取了以下方法: for (let petUID in this.user.pets) { this.af.database.object("/pets/" + petUID ).subscribe(data => { this.ownPets.push(data); }); } 最后,我得到了我的ownPets变量中的所有宠物。 但这种方

我在使用firebase查询数据时遇到问题

我有下面的结构

用户有一些宠物,我想在“宠物”节点中获取用户所有宠物的列表。 我采取了以下方法:

for (let petUID in this.user.pets) {
   this.af.database.object("/pets/" + petUID ).subscribe(data => {
      this.ownPets.push(data);
   });
}
最后,我得到了我的
ownPets
变量中的所有宠物。 但这种方法对我来说很尴尬

如果从
ownPets
数组中的宠物更新了“宠物”节点中的任何数据,则会再次推送此宠物,我会在
ownPets
中获取过期的和新的宠物

我尝试了另一种方法:使用query方法并在
equalTo
中发送一个对象数组,但我收到一个错误,说我无法发送对象数组

this.af.database.list('/pets', {
    query: {
      orderByChild: "name",
      equalTo: ["pet1", "pet2"]
    }
  }).subscribe (data => {
    console.log(data);
});
谁有更好的方法我可以用?
谢谢

我可能误解了什么,但是为什么不创建一个临时数组并将新数据推入其中,然后简单地
this.ownPets=newData
?我可能误解了什么,但是为什么不创建一个临时数组并将新数据推入其中,然后简单地
this.ownPets=newData