spring - 为什么 Spring ReactiveMongoRepository 没有 Mono 的保存方法?

标签 spring mongodb reactive-programming spring-data-mongodb project-reactor

我有一个扩展了 ReactiveMongoRepository 的 MovieRepository。我想以 react 方式保存单个 POJO。但是 ReactiveMongoRepository 没有为 Mono 或 Publisher 提供保存方法。我必须在 ReactiveMongoRepository 中使用 block() 方法或使用 saveAll 方法。

public Mono<ServerResponse> create(ServerRequest request) {

    Mono<Movie> movieMono = request.bodyToMono(Movie.class);
    return movieRepository.save(movieMono.block()) //
            .flatMap((movie) -> ServerResponse.ok().body(fromObject(movie)));
}

有没有更好的方法来解决这类问题?我不认为使用 block 方法是响应式编程的好主意。

最佳答案

你可以这样做

 Mono<Movie> movieMonoSaved = movieMono.flatMap(movieRepository::save);
 return ServerResponse.status(HttpStatus.CREATED).body(movieMonoSaved, Movie.class);

关于spring - 为什么 Spring ReactiveMongoRepository 没有 Mono 的保存方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52124727/

相关文章:

javascript - 如何在 SparkAR Studio 98 中将跟踪平面上的对象定向到相机?

java - Mono#then 和 Mono#and 之间的区别?

java - 由模拟函数 Spring Boot 返回的 NPE

java - 使用 maven 时用于开发环境与部署的不同 spring XML 文件

javascript - Mongoose 查询 WHERE 和 OR NOT

mongodb - 如何使用 Micronaut 和 Kotlin + KMongo 为 MongoDB 配置对象映射?

mongodb - 使用 Golang 在 MongoDB 中无循环地更新文档

javascript - Observable 未接收 angular2 中的下一个值

spring - 设置 Spring 4 RestTemplate 以使用 SSL (JKS)

java - Spring Boot @ConditionalOnProperty 不解析属性