Home > Mobile >  RxJS mergeMap: Inner Observable does not get excecuted
RxJS mergeMap: Inner Observable does not get excecuted

Time:07-08

I want to upload multiple files. Before the upload can happen, I need to POST a request which returns a personId so I can link this personId to my upload files in the backend.

The postOnboardingRequestDto$ creates a record but the files are not saved. The postSingleFormData$ is not executed. Any help or pointing into the right direction would be much appreciated.

postOnboardingRequestDto$ = (onboardingRequestDto) => this.onboardingService.postOnboardingRequestDto(onboardingRequestDto);
postSingleFormData$ = (personId, formData) => this.httpClient.post<SaveResponse>(`/v2/api/onboarding/person/${personId}/document/DOCUMENT_TYPE`, formData);


  confirmOnboardingRequest() {
    this.onboardingRequestIsSubmitted = true;

    this.postOnboardingRequestDto$(this.onboardingRequestDto).pipe(
      mergeMap((onboardingRequestDto) => from(this.selectedFiles).pipe(
          map(file => {
            console.log(`file - ${file.name}`);
            const formData = new FormData();
            formData.append(file.name, file);
            this.postSingleFormData$(onboardingRequestDto.onboardingPersonId, formData);
          })
        )
      )
    ).subscribe((res) => console.log(`res ${JSON.stringify(res)}`));

  }

CodePudding user response:

Does this work for you?

confirmOnboardingRequest() {
  this.onboardingRequestIsSubmitted = true;

  this.postOnboardingRequestDto$(this.onboardingRequestDto).pipe(
    mergeMap((onboardingRequestDto) =>
      from(this.selectedFiles).pipe(
        map(file => new FormData().append(file.name, file)),
        mergeMap(formData => this.postSingleFormData$(onboardingRequestDto.onboardingPersonId, formData))
      )
    )
  ).subscribe((res) => console.log(`res ${JSON.stringify(res)}`));
}
  • Related