У меня есть две коллекции данных
Collection1 = Companies (List of companies)
ID
..
Collection2 = TH(List of summary Transaction History)
ID
По сути, они оба имеют один и тот же идентификатор (идентификатор компании), и я пытаюсь объединить каждую компанию с ее сопутствующей записью в (TH), а затем вывести ее в таблицу.
Много гуглил, но это не помогает.
Мой код (companies.services.ts)
export class CompanieService {
companiesCollection: AngularFirestoreCollection <Company>;
thv4CLcollection: AngularFirestoreCollection <THv4CL>;
Thv4: AngularFirestoreDocument <THv4CL>;
companies: Observable<Company[]>;
Thv4C: Observable<any[]>;
constructor(public fs: AngularFirestore) {
this.companiesCollection = fs.collection<Company>('companies', ref =>
ref.orderBy('companyName'));
this.thv4CLcollection= fs.collection<THv4CL>('transactionHistory', ref =>
ref.orderBy('companyName'));
//const res = await Promise.all(clients);
this.companies = this.companiesCollection.snapshotChanges().pipe(
map(actions => actions.map(a => {
var data = a.payload.doc.data() as Company;
const id = a.payload.doc.id;
this.fs.doc('transactionHistory/' + id).valueChanges().pipe(
map(data2 =>
Object.assign({}, {
id, ...data, ...data2
})));
return { id, ...data };
}))
);
}
Я тоже пытался
this.companiesCollection = fs.collection<Company>('companies', ref =>
ref.orderBy('companyName'));
this.companies = this.companiesCollection.snapshotChanges().pipe(
map(actions => actions.map(a => {
const data = a.payload.doc.data() as Company;
const id = a.payload.doc.id;
// console.log("company "+data.companyName);
this.fs.collection<THv4CL>("transactionHistory").doc(data.identifier)
.snapshotChanges().pipe( map(data2 =>
{
console.log("Thv4CL "+data2);
data.thCL=data2.payload.data() as THv4CL;
}));
return { id, ...data, };
}))
);
Я попытался выполнить итерацию и получить список всех компаний, но не присоединился к другой коллекции.