Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 反应式编程_Java_Reactive Programming_Spring Data Mongodb_Spring Webflux_Project Reactor - Fatal编程技术网

Java 反应式编程

Java 反应式编程,java,reactive-programming,spring-data-mongodb,spring-webflux,project-reactor,Java,Reactive Programming,Spring Data Mongodb,Spring Webflux,Project Reactor,我想从Mono中提取对象,然后使用该对象执行其他数据库操作,如何在不使用block()的情况下执行此操作 如下 Mono<TemplateBo> templateBoMono = templateRepository.findActiveTemplate(tenantId); TemplateBo templateBo= templateBoMono.flatMap(bo -> { bo.setStatus(TemplateStatu

我想从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();
Mono模板bomono=
templateRepository.findActiveTemplate(tenantId);
TemplateBo TemplateBo=
templateBoMono.flatMap(bo->{
bo.setStatus(TemplateStatusEnum.DEACTIVATED);
返回Mono.just(bo);
}).flatMap(templateRepository::updateTemplate).block();
templateVersionRepository.findPublishedByTemplateId(templateBo.getId()).flatMap(版本->{
version.setStatus(TemplateVersionStatusEnum.MODIFIED);
返回Mono.just(版本);
}).flatMap(templateVersionRepository::updateVersion).subscribe();
我想同时执行这两个操作。

只需删除
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()

请回复它的紧急情况。你读了吗?很抱歉,我是新来的,问这个问题很紧急。4.我可以成为新来的。问题有多紧迫并不重要——一个好的问题会得到好的答案。就这么简单。我只是想帮忙。谢谢@Jonathan的编辑。注意,
setStatus
flatMap
是不必要的,可以用
.doOnNext(bo->bo.setStatus(TemplateStatusEnum.DEACTIVATED))