Java SpringWebFlux非阻塞依赖资源调用
我正在使用SpringWebFlux和SpringDataMongoDB。 在我的REST控制器中,我试图从数据库(MongoDB)中获取一种类型的所有对象(例如,一个品牌的所有自行车)。 我当前的实现如下所示:Java SpringWebFlux非阻塞依赖资源调用,java,spring,spring-webflux,project-reactor,reactive,Java,Spring,Spring Webflux,Project Reactor,Reactive,我正在使用SpringWebFlux和SpringDataMongoDB。 在我的REST控制器中,我试图从数据库(MongoDB)中获取一种类型的所有对象(例如,一个品牌的所有自行车)。 我当前的实现如下所示: @GetMapping("/bybrand/{brandId}") public Flux<Bike> bikesByBrand(@PathVariable(value = "brandId") String brandId) { return bikeReposi
@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
);
}
但是我找不到一种方法,最终用高级方法返回lambda函数(自行车流量)的结果。您可以使用flatMapMany
return brandRepository.findById(brandId).flatMapMany(bikeRepository::findByBrand)
谢谢,成功了!你能举个例子,以防我需要做更多类似的连续呼叫吗?我会像brandRepository.findById(brandId).flatMapMany(…).flatMapMany(…)?是的,如果从Mono转换为Flux,您只需要
flatMapMany
,否则只需使用flatMap
return brandRepository.findById(brandId).flatMapMany(bikeRepository::findByBrand)