У меня есть два кода ниже
Не отражает никаких изменений в коллекции
this.taskToday = Observable.fromPromise(this.dbCollectionService.taskCollection.ref.where('dueDate', '==', moment().startOf("day").toDate()).get().then(doc=>{
return doc.docChanges() .map(
d => {
const task = d.doc.data() as Task;
const id = d.doc.id
return { id, ...task};
//return concat(task,id);
}
);
}))
Отражение изменений, если таковые имеются в коллекции
this.taskToday = this.afs.collection('tasks', ref => ref.where('dueDate', '==', moment().startOf("day").toDate())).snapshotChanges().pipe(
map(actions => actions.map(a => {
const task = a.payload.doc.data() as Task;
const id = a.payload.doc.id;
return { id, ...task };
}))
);
Как сделать первый пример видимым, чтобы он мог срабатывать при любых изменениях в коллекции
Обновление
Я нашел
onSnapshot
могу сделать это. пробуя код ниже,
this.dbCollectionService.taskCollection.ref.where('dueDate', '==', moment().startOf("day").toDate()).onSnapshot(doc => {
doc.docChanges() .map(
d => {
const task = d.doc.data() as Task;
const id = d.doc.id
}
);
})
Но возникла проблема с обновлением this.taskToday наблюдаемой переменной