在嵌套对象上应用过滤器后如何返回父可观测对象的结果

时间:2018-12-17 10:13:44

标签: angular rxjs observable

我在firebase中有一个名为 orders 的数据库对象,其结构如下 enter image description here

现在,我正在尝试根据书名过滤结果,以返回具有特定书名的订单。 我在服务中使用以下代码,该代码返回给我所选的书。 如何通过过滤后的书找回整个对象。

 this.db.list('/orders')
  .valueChanges()
  .pipe(mergeMap(x => x))
  .pipe(mergeMap( y => y['items'] as []),
    filter( y => {
      if(y.book.title == "Harry Potter - The Complete Collection")
        return y;
    })
  )
  .subscribe(result => console.log(result)); 
  }

1 个答案:

答案 0 :(得分:0)

创建单独的过滤器功能,接受订单并过滤其购买书名

const hasBookByTitle = bookTitle => filter(order => order.items.some(({book}) => book.title === bookTitle))

this.db.list('/orders')
  .valueChanges()
  .pipe(hasBookByTitle("Harry Potter - The Complete Collection"))
  .subscribe(result => console.log(result));