Реактивное программирование - PullRequest
0 голосов
/ 11 октября 2018

Я хочу извлечь объект из Mono, а затем использовать этот объект для выполнения других операций с базой данных. Как это сделать без использования block ()?

, как показано ниже

  Mono<TemplateBo> templateBoMono = 
  templateRepository.findActiveTemplate(tenantId);

    TemplateBo templateBo=
    templateBoMono.flatMap(bo -> {
        bo.setStatus(TemplateStatusEnum.DEACTIVATED);
        return Mono.just(bo);
    }).flatMap(templateRepository::updateTemplate).block();

    templateVersionRepository.findPublishedByTemplateId(templateBo.getId()).flatMap(version -> {
        version.setStatus(TemplateVersionStatusEnum.MODIFIED);
        return Mono.just(version);
    }).flatMap(templateVersionRepository::updateVersion).subscribe();

Я хочувыполнить обе операции одновременно.

1 Ответ

0 голосов
/ 12 октября 2018

Просто удалите block() и продолжайте flatmap вашего издателя

    templateRepository.findActiveTemplate(tenantId)
            .flatMap(bo -> {
                bo.setStatus(TemplateStatusEnum.DEACTIVATED);
                return Mono.just(bo);
            })
            .flatMap(templateRepository::updateTemplate)
            .flatMap(templateBo -> templateVersionRepository.findPublishedByTemplateId(templateBo.getId())
                    .flatMap(version -> {
                        version.setStatus(TemplateVersionStatusEnum.MODIFIED);
                        return Mono.just(version);
                    })
                    .flatMap(templateVersionRepository::updateVersion))
            .subscribe()
...