Как вернуть результат родительских наблюдаемых после применения фильтра к вложенному объекту - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть объект базы данных с именем orders в firebase, который имеет следующую структуру 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 голосов
/ 17 декабря 2018

Создать отдельную функцию фильтра, которая принимает заказ и фильтрует его. Название книги покупки

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)); 
...