过滤$ firebaseArray Typescript

时间:2017-01-31 03:40:59

标签: typescript firebase firebase-realtime-database

我有一个我要过滤的服务,以及我从firebase中提取的数组或数据。我是firebase的新手,所以我可能做错了什么我在这里接受新想法是我的服务中的功能是什么样的。

public getSelectedHero(hero:string):CharacterCard[] {
  this.cards = firebase.database().ref().child('cards');

  this.selectionOfHeros = this.cards.filter(card => card.affiliation === hero);

  return this.selectionOfHeros;
}

所以我要做的是发送一个参数,根据用户点击的内容过滤数组。

我得到一个错误,说过滤器不是一个函数......但它是用于数组的。

更新到此

 public getSelectedHero(hero:string):CharacterCard[] {
  let cards = firebase.database().ref('cards').once('value');

  cards.then(snap => {
    this.heroCards = snap.val();
    console.log(this.heroCards);
    this.selectionOfHeros = this.heroCards.filter(card => card.affiliation === hero);
  })

  console.log('selections' + this.selectionOfHeros)
  return this.selectionOfHeros;
}

如果滤镜是我遇到问题的地方,我只想在拍完快照后对数组进行排序。

我通过文档找到了这个,你可以使用orderByChild()然后设置equalTo()来对数据库进行排序。这给了我想要的数据,但我真的不想查询数据库,我想操纵网络上的数据。

    public getSelectedHero(hero:string):CharacterCard[] {
  let cards = firebase.database().ref('cards');

  cards.orderByChild('affiliation').equalTo(hero).on('value' , snap => {
    this.heroCards = snap.val();
  })

  return this.heroCards;
}

1 个答案:

答案 0 :(得分:0)

稍微阅读了anuglarfire文档后,我开始围绕如何​​将其放入带有查询调用的数组中。 docs

这是我最终的代码

public getSelectedHero(hero:string):CharacterCard[] {
  let cards = firebase.database().ref().child('cards');
  let selectionQuery = cards.orderByChild('affiliation').equalTo(hero);

  this.selectionOfHeros = this.$firebaseArray(selectionQuery);

  return this.selectionOfHeros;  
}