Java 反应式编程
我想从Mono中提取对象,然后使用该对象执行其他数据库操作,如何在不使用block()的情况下执行此操作 如下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<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))