Что я пытаюсь сделать, перечислить оборудование, принадлежащее каждому клиенту.
Я прочитал, посмотрел видео, скопировал и вставил результат, но ничего не работает, и у меня кружится голова.
Мне нужны идентификаторы для каждого клиента и оборудования, поэтому я получаю их вот так
fetchJobs() {
this.todoCollectionRef = this.afs.collection('clients');
this.todo$ = this.todoCollectionRef.snapshotChanges().pipe(map(actions => {
return actions.map(action => {
const data = action.payload.doc.data() as Todo;
const id = action.payload.doc.id;
return {
id,
data
};
});
}));
}
fetchEquipment() {
this.equipmentCollectionRef = this.afs.collection('equipment');
this.equipment$ = this.equipmentCollectionRef.snapshotChanges().pipe(map(actions => {
return actions.map(action => {
const data = action.payload.doc.data() as Equipment;
const id = action.payload.doc.id;
return {
id,
data
};
});
}));
}
Я также пытался переосмыслить свою структуру данных, но поскольку у каждого клиента будет несколько элементов, а не все одинаковое количество, я пробовал использовать массивы с картами, ноневозможно обновить детали.
Если кто-то может указать мне правильное направление, я буду благодарен.
Я думаю, что янужно что-то вроде этого ..
this.todoCollectionRef = this.afs.collection('clients');
this.todo$ = this.todoCollectionRef.snapshotChanges().pipe(map(actions => {
return actions.map(action => {
const data = action.payload.doc.data() as Todo;
const id = action.payload.doc.id;
return this.afs.collection('equipment', ref => ref.where('client', '==', data.client)).valueChanges()
.pipe(map(eqip => Object.assign({}, {id, data, eqip})));
});
})).switchMap(observables => Observable.combineLatest(observables));
}
If anyone can help here I would be truly grateful.
And if someone could explain the code to help me and others learn.