有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring Webflux非阻塞依赖资源调用

我使用的是Spring Webflux和Spring数据MongoDB。 在我的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函数(自行车流量)的结果


共 (1) 个答案

  1. # 1 楼答案

    你可以使用Flatmap很多

    return brandRepository.findById(brandId).flatMapMany(bikeRepository::findByBrand)