Java SpringWebFlux非阻塞依赖资源调用

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

我正在使用SpringWebFlux和SpringDataMongoDB。 在我的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
    );
}

但是我找不到一种方法,最终用高级方法返回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)