首页 文章

过滤$ firebaseArray Typescript

提问于
浏览
0

我有一个我要过滤的服务,以及我从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

    在阅读了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;  
    }
    

相关问题