Я пытаюсь отфильтровать наблюдаемый список, возвращаемый из запроса к базе данных реального времени 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)
})
);
}