为什么 Spring ReactiveMongoRepository 没有 Mono 的保存方法?
Why Spring ReactiveMongoRepository does't have save method for Mono?
我有一个扩展了 ReactiveMongoRepository 的 MovieRepository。我想以反应方式保存单个 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)));
}
有没有更好的方法来解决这类问题?我不认为使用块方法是响应式编程的好主意。
你可以这样做
Mono<Movie> movieMonoSaved = movieMono.flatMap(movieRepository::save);
return ServerResponse.status(HttpStatus.CREATED).body(movieMonoSaved, Movie.class);
我有一个扩展了 ReactiveMongoRepository 的 MovieRepository。我想以反应方式保存单个 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)));
}
有没有更好的方法来解决这类问题?我不认为使用块方法是响应式编程的好主意。
你可以这样做
Mono<Movie> movieMonoSaved = movieMono.flatMap(movieRepository::save);
return ServerResponse.status(HttpStatus.CREATED).body(movieMonoSaved, Movie.class);