Firestore,如何同时组合两个以上对集合的引用

时间:2019-01-11 06:51:01

标签: angular typescript reference google-cloud-firestore angularfire2

我使用

中描述的方法
  

Firestore how to get the collection value from another collection document id is referenced

但是我必须一次合并两个参考文档,但要合并在其他集合中,例如:

cash.models.ts:

import { DocumentReference } from "@angular/fire/firestore";

export class Cash {  // .collection('contactors')
  id: string;
  person: DocumentReference<Workers>;
  contactor: DocumentReference<Contactors>;
  nr_dokumentu: string;
  kwota: number;
  data: string;
}

export class Workers {
  id: string;
  imie: string;
  nazwisko: string;
}

export class Contactors {
  id: string;
  .
  .
  .
  kontakttelefon: string;
}

首先,我将合并的人员引用添加到Cash,并且效果很好

cash.service.ts:

...
getCash(){
  return this.cashCollection.snapshotChanges().pipe(map(changes => {
    return changes.map(a => {
      let data = a.payload.doc.data() as Cash;
      const workerId = data.osoba.path;

      const contactorId = data.contactor.path

      delete data.osoba
      return this.firestore.doc(workerId).valueChanges().pipe(map((collWorkerData: Workers) => {
        return Object.assign({
          person: {
            id: a.payload.doc.data().person.id,
            imie: collWorkerData.imie,
            nazwisko: collWorkerData.nazwisko
          },
           ...data });
      }))
    })
  })).pipe(mergeMap(cash => combineLatest(cash)))
}
...

但是现在,我必须将collection('contactor')组合到collection('cash')中。我不知道需要在哪里实现代码以及如何一起返回所有内容,因为我已经使用过return语句。

这是我使用Firestore的第一个应用程序。请帮我。谢谢

0 个答案:

没有答案