【发布时间】:2020-09-18 15:40:15
【问题描述】:
我正在使用 Spring Webflux 和 Spring Data MongoDB Reactive。 在我的 REST 控制器中,我试图从数据库(MongoDB)中获取一种类型的所有对象(例如一个品牌的所有自行车)。 我当前的实现如下所示:
@GetMapping("/bybrand/{brandId}")
public Flux<Bike> bikesByBrand(@PathVariable(value = "brandId") String brandId) {
return bikeRepository.findByBrand( //returns a Flux<Bike>
brandRepository.findById(brandId) //returns a Mono<Brand>
.block() //returns a Brand
);
}
为了保持反应模式,我想避免 block() 调用。我尝试了 map() 和 doOnSuccess() 的多种组合,但没有找到正确的方法来做我想做的事。 我在网上找到的示例或教程没有涵盖使用依赖调用数据库的用例。 如何避免在此处使用 block() 以及使用依赖的先前调用访问数据库的黄金标准是什么?
我的另一种方法如下。
brandRepository.findById(brandId)
.doOnSuccess(brand -> bikeRepository.findByBrand(brand));
但是我找不到最终在上级方法中返回 lambda 函数(自行车的通量)的结果的方法。
【问题讨论】:
标签: java spring spring-webflux project-reactor reactive