【发布时间】:2019-08-24 04:22:58
【问题描述】:
我对 webflux 比较陌生,我想找到解决方案来避免在有条件时嵌套 flatMap:
我有 3 个简单的实体:
项目、品牌、类别。
Item 基本包含:brandId 和 categoryId
public Mono<Item> patch(String itemId, PatchSpecs specs) {
return itemRepository.findById(itemId)
.switchIfEmpty(Mono.error(..)))
.flatMap(item -> {
final String brandId = specs.getBrandId();
if (brandId != null) {
return brandService.getById(brandId)
.switchIfEmpty(Mono.error(..)))
.flatMap(brand -> {
final String categoryId = specs.getCategoryId();
if (categoryId != null) {
return categoryService.getById(categoryId)... -> return updateAndSave(..)
}
return updateAndSave(specs, item, brand, null);
});
}
else {
final String categoryId = specs.getCategoryId();
if (categoryId != null) {
return categoryService.getById(categoryId)... -> return updateAndSave(..)
}
return updateAndSave(specs, item, null, null);
}
});
}
如何防止这种分支条件 flatMaps 混乱?我无法想象我是否在 Item 中有另一个实体。会有更多嵌套的 flatMap 吗?
【问题讨论】:
-
产品变量从何而来?
-
抱歉打错了我的意思是商品不是产品
标签: java reactive-programming spring-webflux project-reactor