首页 > 解决方案 > 如何使用 webflux 和 r2dbc 在一个请求中保存两次?

问题描述

我将 webflux 与 r2dbc 一起使用。
我尝试在一项服务中保存两个表,但只有一个实际保存。
可能有一种方法可以在处理程序中执行两次 flatmap,但我想在服务中使用事务。

Handler.java
Mono<ServerResponse> save(ServerRequest request) {
        return request.bodyToMono(Todo.class)
            .flatMap(todo-> todoService.save(todo))
            .flatMap(todo -> ok().build());
    }
TodoService.java
public Mono<Todo> save(Todo todo) { 
    todoLogRepository.save(getTodoLog(todo)); // this now work
    return todoRepository.save(todo);
}
Router.java
@Bean
public RouterFunction<?> routes(InvestmentHandler handler) {
    return route(POST("/save"), handler::save);
}

标签: spring-webfluxreactorr2dbcr2dbc-postgresql

解决方案


推荐阅读