Nie można zasubskrybować po forkjoin

Nov 19 2020

Chcę wykonać jakąś operację firebase wewnątrz pętli w układzie kątowym. Kiedy wysyłam żądanie HTTP do Firebase, zwraca on tablicę obserwabli, więc używając forkjoin konwertuję tę tablicę obserwabli na pojedyncze. Teraz problem polega na tym, że kiedy subskrybowałem te nowe obserwowalne, nic nie dostałem

  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: ƒ}

Ja też tego próbuję. W tym czasie ponownie zwraca obserwable

 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

Oto moja usługa

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

Nie wiem, co jest główną przyczyną tego problemu. Chcę, aby po zakończeniu wykonywania pętli zwrócił pojedynczy obiekt tablicy zawierający informacje o wszystkich użytkownikach należących do tej tablicy e-mail (this.email)

Odpowiedzi

1 ThiagoBitencourt Nov 19 2020 at 09:50

Problem dotyczy kodu forkJoin([data]).

Twój datato już tablicą obserwabli, tak po prostu przekazać go forkJoinza słuszne: forkJoin(data).