Impossible de s'abonner après forkjoin

Nov 19 2020

Je veux effectuer une opération Firebase à l'intérieur d'une boucle angulaire. Lorsque j'envoie une requête HTTP à Firebase, elle renvoie un tableau d'observables, donc en utilisant forkjoin, je convertis ce tableau d'observables en observables uniques. Maintenant, le problème est que lorsque je m'abonne à ces nouveaux observables, je n'ai rien obtenu

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

J'essaye aussi ceci. Dans ce temps, il renvoie à nouveau des 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

Voici mon service

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

Je ne sais pas quelle est la raison principale de ce problème. Ce que je veux, c'est qu'après la fin de l'exécution de la boucle, il renvoie un objet de tableau unique contenant des informations sur tous les utilisateurs appartenant à ce tableau d'e-mails (this.email)

Réponses

1 ThiagoBitencourt Nov 19 2020 at 09:50

Le problème vient du code forkJoin([data]).

Votre datail est déjà un tableau de Observables, de sorte que vous venez de passer à forkJoincomme ceci: forkJoin(data).