如何使用 WebFlux 获取主对象和子对象
How to fetch main object and sub objects with WebFlux
我正在使用包含块的页面构建内容管理系统。我获取一个带有 id 的页面,然后获取与同一页面 id 关联的块。以阻塞的方式,我会这样做:
Page page = repo.getPageById(47);
page.setBlocks(repo.getBlocksByPageId(47));
当做这个反应时,它是 flatMaps
和 zipWith
的一团糟:
Mono<Page> = repo.getPageById(47)
.flatMap(page -> repo.getBlocksByPageId(47).collectList().zipWith(Mono.just(page)))
.flatMap(t -> {
List<Block> blocks = t.getT1();
Page page = t.getT2();
page.setBlocks(blocks);
return Mono.just(page);
});
您能否推荐实现相同结果的更好方法?
您可以从头压缩 2 个 Mono
并使用 map
而不是 flatMap
。
Mono<Page> result = repo.getPageById(47)
.zipWith(repo.getBlocksByPageId(47).collectList())
.map(t -> {
Page page = t.getT1();
page.setBlocks(t.getT2());
return page;
});
我正在使用包含块的页面构建内容管理系统。我获取一个带有 id 的页面,然后获取与同一页面 id 关联的块。以阻塞的方式,我会这样做:
Page page = repo.getPageById(47);
page.setBlocks(repo.getBlocksByPageId(47));
当做这个反应时,它是 flatMaps
和 zipWith
的一团糟:
Mono<Page> = repo.getPageById(47)
.flatMap(page -> repo.getBlocksByPageId(47).collectList().zipWith(Mono.just(page)))
.flatMap(t -> {
List<Block> blocks = t.getT1();
Page page = t.getT2();
page.setBlocks(blocks);
return Mono.just(page);
});
您能否推荐实现相同结果的更好方法?
您可以从头压缩 2 个 Mono
并使用 map
而不是 flatMap
。
Mono<Page> result = repo.getPageById(47)
.zipWith(repo.getBlocksByPageId(47).collectList())
.map(t -> {
Page page = t.getT1();
page.setBlocks(t.getT2());
return page;
});