Фильтрация результатов запроса к базе данных AngularFire2 в реальном времени - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь отфильтровать наблюдаемый список, возвращаемый из запроса к базе данных реального времени AngularFire2, но фильтр, похоже, не применяется, и я получаю весь список.

Мне не удалось найти много информации онлайн, поскольку кажется, что это относится либо к более старым версиям до использования .pipe, либо к более новой базе данных firestore.

getPosts(limit) {
    return this.db.list('/reasons', ref => ref.orderByKey().limitToLast(limit)).snapshotChanges().pipe( map( (data: any[] ) => {
      return data.map( post => {
        const $key = post.payload.key;
        const item = { $key, ...post.payload.val() };
        return item;
      })
      .filter(post => post.flag !== true || post.privacy !== true )
    }))
  }

Обновление:

У меня есть фильтрация, но я Я не уверен, что это правильный способ сделать это с помощью rx js 6.

Вместо того, чтобы просто опубликовать его в качестве ответа, я надеялся, что кто-то сможет проверить структуру, поскольку я не уверен, что это действительно должно быть принятый ответ. Очевидно, что это не соответствует структуре, предложенной ниже: pipe (map (), map (), filter ())

getPosts(limit) {
    return this.db.list('/reasons', ref => ref.orderByKey().limitToLast(limit)).snapshotChanges().pipe( 
      map( (data: any[] ) => {
        return data.map( data => {
          const $key = data.payload.key;
          const item = { $key, ...data.payload.val() };
          return item;
        }).filter(data => data.flag !== true).filter(data => data.privacy !== true)
      })
    );
  }
...