2017-11-16 8 views
0

私はシンプルなCRUDコントローラを持っています。春webfluxがモノオブジェクトと対話する

@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

私はいつもちょうど質問をした後、答えを見つける...
は、私はちょうどオブジェクトを編集するために、別の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)); 
} 
関連する問題