AngularFire2 Объединить две коллекции вместе - PullRequest
1 голос
/ 13 июня 2019

У меня есть две коллекции данных

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,  };
  }))
);

Я попытался выполнить итерацию и получить список всех компаний, но не присоединился к другой коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...