【问题标题】:Unable to subscribe after forkjoin分叉加入后无法订阅
【发布时间】:2021-03-02 14:37:15
【问题描述】:

我想在 Angular 循环中执行一些 firebase 操作。当我向 firebase 发送 HTTP 请求时,它返回一个可观察对象数组,因此使用 forkjoin 我将这个可观察对象数组转换为单个可观察对象。现在的问题是,当我订阅这些新的 observables 时,我什么也没得到

  get_student_email() {
    this.get_project_service
      .get_project_by_doc_id(this.batchID, this.projectID)
      .subscribe((res) => {
        this.response = res;
        this.email = this.response.student;
        let data = this.email.map((email) =>
          this.get_student_service.get_student_by_email_id(email)
        );
        let info = forkJoin([data]);
        console.log('info:', info);
        info.subscribe((res) => {
          console.log(res);
          console.log('Execute');
        });
      });
  }

Output:info: Observable {_isScalar: false, _subscribe: ƒ}

我也试试这个。在这一次它再次返回 observables

 let data = this.email.map((email) =>
          this.get_student_service.get_student_by_email_id(email)
        );

        let info = forkJoin([data]);
        console.log('info:', info);
        info.subscribe((res) => {
          console.log(res);
          console.log('Execute');
        });
      });

Output:-
info: Observable {_isScalar: false, _subscribe: ƒ}
[Observable]
Execute

这是我的服务

  get_student_by_email_id(email) {
    return this.fire_store
      .collection('User', (ref) => ref.where('email', '==', email))
      .valueChanges();
  }

我不知道这个问题背后的主要原因是什么。我想要的是,在循环完成执行后,它返回单个数组对象,其中包含有关属于该电子邮件数组(this.email)的所有用户的信息

【问题讨论】:

  • 看来您在可观察对象中有可观察对象。请说明this.email 到底是什么以及this.get_student_service.get_student_by_email_id() 函数返回什么。
  • 现在查看这个函数返回用户信息

标签: javascript angular firebase google-cloud-firestore angularfire2


【解决方案1】:

问题在于代码forkJoin([data])

您的 data 它已经是一个 Observables 数组,所以您只需将它传递给 forkJoin,如下所示:forkJoin(data)

【讨论】:

  • 不,当时我的订阅者块不打印任何东西
猜你喜欢
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 2018-11-04
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多