在Spring WebFlux中链接多个反应性流

时间:2019-08-22 15:04:32

标签: spring-webflux reactive-streams

在Spring Webflux项目中,我有一个方法可以返回包装到Mono

的对象
Mono<MyObject> find(.....) {

}

在调用此方法后的反应式代码中,我需要检查接收对象中的一个字段,如果不是null,则需要将其存储到数据库中并替换为另一个值。

这是将数据存储到数据库的方法的签名

Mono<String> insert(...);

这是我执行此任务的地方

Mono<MyObject> result = 
    service.find(...)
        .map(returnedResults -> {
            if (returnedResults.getMyField() != null) {
                return repository.insert(...)
                          .map(inserted-> new MyObject(inserted.getMyField())));
            } else {
                return Mono.just(returnedResults);
            }
        }).flatMap(x -> x);

这似乎可行,但是对于反应流来说是陌生的,您能告诉我这是否是解决此问题的最佳方法吗?

0 个答案:

没有答案