Nach Forkjoin kann nicht abonniert werden

Nov 19 2020

Ich möchte eine Firebase-Operation innerhalb einer eckigen Schleife ausführen. Wenn ich eine HTTP-Anfrage an firebase sende, gibt sie ein Array von Observablen zurück. Mit forkjoin konvertiere ich dieses Array von Observablen in einzelne Observablen. Das Problem ist nun, dass ich beim Abonnieren dieser neuen Observablen nichts bekommen habe

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

Ich versuche das auch. In dieser Zeit werden wieder Observablen zurückgegeben

 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

Hier ist mein Service

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

Ich weiß nicht, was der Hauptgrund für dieses Problem ist. Ich möchte, dass nach Abschluss der Ausführung der Schleife ein einzelnes Array-Objekt zurückgegeben wird, das Informationen über alle Benutzer enthält, die zu diesem E-Mail-Array gehören (this.email).

Antworten

1 ThiagoBitencourt Nov 19 2020 at 09:50

Das Problem ist mit dem Code forkJoin([data]).

Ihr dataist es bereits eine Reihe von Observablen, so dass Sie es einfach passieren zu forkJoindieser mag: forkJoin(data).