Объедините два объекта списка angularFire (база данных в реальном времени), чтобы сформировать новую наблюдаемую - PullRequest
0 голосов
/ 21 марта 2020

У меня два наблюдения angularFireList и пациентов. Назначение содержит информацию о пациенте. Я хочу взять все данные о приеме и соответствующих данных о пациенте и объединить их, чтобы сформировать новый наблюдаемый AppointedPatient []. Ниже код работал нормально с HttpClient, но когда я обновил использовать AngularFire, он больше не работает.

  getAppointments() {
    this.appointmentService.fetchAllAppointments()
    .pipe(
      take(1),
      switchMap(appointments => {
        const appointedPatients: AppointedPatient[] = [];

        for (const appointment of appointments) {
          const appointmentDate = new Date(appointment.appointmentDateTime);
          const appointmentDateOnly  = new Date(appointmentDate.setHours(0, 0, 0, 0));
          const newAppointment$: any = this.patientsService.getPatient(appointment.patientId)
            .pipe(
              switchMap((patient) => of(new AppointedPatient(
                  appointment.appointmentId,
                  patient.firstName,
                  patient.lastName,
                  patient.address,
                  patient.casePaperNumber,
                  patient.mobileNumber,
                  appointment.appointmentDateTime,
                  appointmentDateOnly
                ))
              )
            );
          appointedPatients.push(newAppointment$);
        }
        return forkJoin(appointedPatients);
      })
    ).subscribe(data => console.log(data));
  }
...