【问题标题】:Filter observable value过滤可观察值
【发布时间】:2016-09-07 17:36:26
【问题描述】:

我有一个简单的函数,它调用我的 firebase 数据库来获取项目列表。我正在寻找一种按 location.liked === true 过滤这些项目的简单方法。但是,我无法使用传统的过滤器数组方法来完成此操作。你们中有人知道如何做到这一点吗?

this.locations = af.database.list('/trips')
  .map((locations) => {
    return locations.map((location) => {
      location.liked = af.database.object(`/likes/${this.uid}/${location.$key}`);
      return location;
    })
  });

我最初的方法是使用以下逻辑

this.filteredResult = locations.map((locations) => {
 return locations.filter((location) => {
  return location.liked
 })
})

但是,这给了我任何 [] 无法过滤的错误

【问题讨论】:

  • 包含此代码的函数看起来如何?
  • 它实际上是上面放置在我的类的构造函数中的完整函数。我将类中的位置定义为位置毫无价值:Observable;

标签: angular typescript reactive-programming


【解决方案1】:

你有没有尝试过这样的事情:

this.locations = af.database.list('/trips').filter((location) => {
    return location.liked === true;
});   

检查这个例子:

https://plnkr.co/edit/U9p7LHFsYIXeFiJkIiRs?p=preview

【讨论】:

  • 感谢您的回复。这将返回以下错误:类型“any[]”上不存在属性“liked”。我认为原因可能是 af.database.list 返回一个 observable
  • @user3642173 在这种情况下,只需将代码更改为 af.database.list('/trips').map(locations => locations.filter((location) => { return location.liked = == 真;}))
  • 谢谢路易斯。这是我最初尝试的,但它返回相同的错误。是否必须如此。与 location.liked 的结果也是可观察的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多