我有一个简单的CRUD控制器。更新时我希望将更新的模型与必须更新的模型合并,这就是我现在所拥有的:
@PutMapping("{id}")
public Mono<Map> update(@PathVariable UUID id, @RequestBody Server updatedServer) {
Mono<Server> server = this.serverRepository.findById(id);
// Update the server here.
// server.setName(updatedServer.getName());
// server.setHost(updatedServer.getHost());
server.flatMap(this.serverRepository::save).subscribe();
return Mono.just(Collections.singletonMap("success", true));
}
如何在保存之前编辑server
变量?订阅Mono时,它将在保存后执行。
我知道这是一个非常简单的问题,但我找不到办法。
答案 0 :(得分:1)
我总是在提出问题之后找到答案...... 我刚用另一个flatmap来编辑对象:
@PutMapping("{id}")
public Mono<Server> update(@PathVariable UUID id, @RequestBody Server updatedServer) {
Mono<Server> server = this.serverRepository.findById(id);
return server.flatMap(value -> {
value.setName(updatedServer.getName());
value.setHost(updatedServer.getHost());
return Mono.just(value); // Can this be done cleaner?
}).flatMap(this.serverRepository::save);
}
或仍然返回success: true
时:
@PutMapping("{id}")
public Mono<Map> update(@PathVariable UUID id, @RequestBody Server updatedServer) {
Mono<Server> server = this.serverRepository.findById(id);
return server.flatMap(value -> {
value.setName(updatedServer.getName());
value.setHost(updatedServer.getHost());
return Mono.just(value); // Can this be done cleaner?
}).flatMap(this.serverRepository::save).subscribe();
return Mono.just(Collections.singletonMap("success", true));
}