循环对象值错误 AngularFire 文档 ID

Cyclic Object Value Error AngularFire Document ID

我在使用 AngularFire 的 Angular 项目中遇到 "Cyclic Object Value" 错误。我是 Firebase 的新手,所以也许有一个简单的解决方法,但我找不到。

首先,我在我的 Firestore 数据库中查询一个集合,然后我尝试使用第一个集合中的文档 ID 查询另一个集合。

这是相关代码:

foo.service.ts:

async checkOrgas() {
    let orga: any;
    const user = await this.afAuth.currentUser;
    const results = this.db
      .collection('orgas', (ref) => {
        return ref.where('createdBy', '==', user.uid);
      })
      .valueChanges({ idField: 'orgaID' })
      .pipe(take(1));
    return results;
  }
async getOrgaBankings(orgaID: string) {
    const results = this.db.collection('bankings', (ref) => {
      return ref.where('orga', '==', orgaID);
    }).valueChanges({ idField: 'bankingID' });
    return results;
  }

foo.component.ts:

async getOrga() {
    const orgas = await this.orgaService.checkOrgas();

    this.orgasSubscription = orgas.subscribe((val) => {
      this.orga = val[0];
      val.length > 0 ? (this.memberOfOrga = true) : (this.memberOfOrga = false);
  }
async loadOrgaBankingInfo() {
    this.orgaBanking = this.orgaService.getOrgaBankings(this.orga.orgaID);
  }

Firefox 中的确切错误是

ERROR TypeError: "cyclic object value"

我对错误的含义有基本的了解,但即使有了这些知识我也不知道如何正确修复它。

如果有人 运行 遇到类似的问题,这里就是答案!

我确实解决了问题,首先,组件 HTML 中的 JSON 管道导致了错误。

问题出在以下函数中:

async loadOrgaBankingInfo() {
    this.orgaBanking = this.orgaService.getOrgaBankings(this.orga.orgaID);
  }

我忘记订阅 getOrgaBankings(),因此,我在 Observable 而不是数组上使用了 JSON 管道。

重构函数后,一切都按预期运行:

async loadOrgaBankingInfo() {
    this.orgasSubscription.unsubscribe();
    const orgaBanking = await this.orgaService.loadOrgaBankings(
      this.orga.orgaID
    );
    orgaBanking.subscribe((val) => {
      console.log(val);
    });
  }