Webflux保存到存储库而不使用.block()

时间:2019-05-09 20:37:04

标签: kotlin spring-webflux

我在服务中使用以下方法:

override fun enableDisable(id: String, active: Boolean) = tryCatch(
            repository.findById(id).let {
                it.map { p -> p.active = active }; repository.save(it)
            },
            DataNotFound("Data not found"))

我遇到以下错误:

Need: Product
Found: Mono<Product>

如果我放:

repository.save(it.block()!!)

它可以工作,但是我读到,使用.block()不是一个好习惯。我在这里可以使用哪种替代方法?

1 个答案:

答案 0 :(得分:2)

使用flatMap链接功能:

it.map { product -> product.active = active }.flatMap(repository::save)