是否可以根据某些过滤器将内容从一个通量插入到另一个通量
Is it possible to insert content from one flux to another flux based upon some filter
我想根据某些条件将一种助焊剂的内容填充到另一种助焊剂中。这是我的两个助焊剂:
Flux<templateVersionBo> templateVerion = templateVersionRepo.findAll();
Flux<templateBo> template = templateRepo.findAll();
templateVersion 包含模板的 id。我想将模板版本填充到模板变量中,比如模板 'publishedVersion' 和 return templateBo flux,如下所示:
if (templateVersion.getTemplateId().equals(template.getId()) {
templateBo.setTemplatePublishedVersion(version);
}
return templateBo;
我是响应式编程的新手。所以即使不使用 block/subscribe 也不确定是否可能。
如果您的 id
是 Long
并且 TemplateBo
的版本是 "wither",您可以像这样映射您的模板:
// 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())));
这个方法终于对我有用了:
Mono<TemplateBo> templateBoMono = templateVersion
.collectMap(version -> version.getTemplateId())
.flatMap(publishedMap ->
template.map(templateBo -> {
templateBo.setPublished(publishedMap.get(templateId));
return templateBo;
}));
我想根据某些条件将一种助焊剂的内容填充到另一种助焊剂中。这是我的两个助焊剂:
Flux<templateVersionBo> templateVerion = templateVersionRepo.findAll();
Flux<templateBo> template = templateRepo.findAll();
templateVersion 包含模板的 id。我想将模板版本填充到模板变量中,比如模板 'publishedVersion' 和 return templateBo flux,如下所示:
if (templateVersion.getTemplateId().equals(template.getId()) {
templateBo.setTemplatePublishedVersion(version);
}
return templateBo;
我是响应式编程的新手。所以即使不使用 block/subscribe 也不确定是否可能。
如果您的 id
是 Long
并且 TemplateBo
的版本是 "wither",您可以像这样映射您的模板:
// 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())));
这个方法终于对我有用了:
Mono<TemplateBo> templateBoMono = templateVersion
.collectMap(version -> version.getTemplateId())
.flatMap(publishedMap ->
template.map(templateBo -> {
templateBo.setPublished(publishedMap.get(templateId));
return templateBo;
}));