我想根据某种条件将一种焊剂的含量填充到另一种焊剂中。这是我的两个通量:
Flux<templateVersionBo> templateVerion = templateVersionRepo.findAll();
Flux<templateBo> template = templateRepo.findAll();
templateVersion包含模板的ID。我想将模板版本填充到模板变量中,例如模板'publishedVersion',并返回templateBo流量,如下所示:
if (templateVersion.getTemplateId().equals(template.getId()) {
templateBo.setTemplatePublishedVersion(version);
}
return templateBo;
我是反应式编程的新手。因此,即使不使用阻止/订阅也无法确定。
答案 0 :(得分:0)
如果您的id
为Long
,并且TemplateBo
的版本为“枯萎”,则可以映射模板,如:
// async collect id -> version map
Mono<Map<Long, TemplateVersionBo>> templateVersionsMapMono =
templateVerion.collectMap(TemplateVersionBo::getTemplateId);
// get version from map by template id
Flux<TemplateBo> templateBoFlux = templateVersionsMapMono
.flatMapMany(templateVersionsMap -> template
.map(templateBo -> templateBo.withTemplatePublishedVersion(
templateVersionsMap.get(templateBo.getId()).getVersion())));
答案 1 :(得分:0)
最后,这种方法对我有用:
Mono<TemplateBo> templateBoMono = templateVersion
.collectMap(version -> version.getTemplateId())
.flatMap(publishedMap ->
template.map(templateBo -> {
templateBo.setPublished(publishedMap.get(templateId));
return templateBo;
}));