我对angular&firebase和电流很陌生,目前正在使用angular / fire检索服务中符合以下条件的集合;
service.ts
get posts() {
return this.afs
.collection<Todo>('posts', ref => {
let query:
| firebase.firestore.CollectionReference
| firebase.firestore.Query = ref;
query = query.where('posted', '==', true);
return query;
})
.snapshotChanges()
.pipe(
map(action =>
action.map(a => {
const data = a.payload.doc.data();
const id = a.payload.doc.id;
return { id, ...data };
}),
),
);
}
在该组件中,我正在订阅可观察的字段,以检索“发布”字段等于 true 的帖子。以下内容按预期工作,仅记录了“已发布”的帖子。
component.ts
ngOnInit() {
this.service.posts.subscribe(posts => {
console.log(posts);
})
}
但是,当添加带有“已发布”字段等于 false 的帖子时,该帖子也会被记录在控制台中。
从某种程度上来说,这对我来说很有意义,因为集合已更新且组件已订阅,从而导致更新。
但是,我的期望是,如果集合发生了变化,它将仍然适用条件并再次过滤掉。
谢谢大家帮助新手
答案 0 :(得分:0)
我不太了解angularfire2
和firebase
,但是您可以利用数组的map
运算符和filter
运算符。
尝试:
ngOnInit() {
this.service.posts.pipe(
map(posts => posts.filter(post => post.posted)),
).subscribe(posts => {
console.log(posts);
})
}