是否可以基于某个过滤器将一种焊剂的含量插入另一种焊剂

时间:2018-10-10 12:30:59

标签: java reactive-programming spring-webflux

我想根据某种条件将一种焊剂的含量填充到另一种焊剂中。这是我的两个通量:

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;

我是反应式编程的新手。因此,即使不使用阻止/订阅也无法确定。

2 个答案:

答案 0 :(得分:0)

如果您的idLong,并且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;
                }));