Я довольно новичок в 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 , это сообщение также регистрируясь в консоли.
Частично это имеет смысл для меня, так как коллекция обновляется и компонент подписывается на нее, что приводит к обновлению.
Однако мои ожидания были событием, если коллекции изменились, это все еще будут применены условия и снова отфильтрованы.
Спасибо всем за помощь новичку ie