循环对象值错误AngularFire文档ID

问题描述 投票:0回答:1

我在AngularFire的Angular项目中收到“循环对象值”错误。我是Firebase的新手,所以也许有一个简单的解决方法,但是我找不到。

首先,我在Firestore DB中查询一个集合,后来我试图从第一个中查询具有文档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中的确切错误是

错误类型错误:“循环对象值”

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

angular typescript firebase angularfire
1个回答
0
投票

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

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

问题出在以下功能中:

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

我忘了订阅getOrgaBankings(),因此,我在可观察对象而不是数组上使用了JSON Pipe。

重构函数后,所有功能均按预期工作:

async loadOrgaBankingInfo() {
    this.orgasSubscription.unsubscribe();
    const orgaBanking = await this.orgaService.loadOrgaBankings(
      this.orga.orgaID
    );
    orgaBanking.subscribe((val) => {
      console.log(val);
    });
  }
© www.soinside.com 2019 - 2024. All rights reserved.