当前位置: 首页 > 知识库问答 >
问题:

Spring webflux与单对象交互

狄望
2023-03-14

我有一个简单的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));
}

共有1个答案

太叔志尚
2023-03-14

我总是在问完问题后才找到答案...
我只是使用了另一个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));
}
 类似资料:
  • 我的理解是单声道 我说得对吗? 如果没有,单声道之间的区别是什么

  • 请查看以下使用RestTemplate的controller代码(添加注释): 现在,我正试图通过反应式编程实现同样的目标。我现在使用WebFlux中的WebClient和Mono。但是,我很困惑如何将结果结合起来?看一看下面的代码(在任何地方都使用Mono,其余代码保持不变) 问题1:我们如何整合一切,形成一个Mono对象,并将其作为响应发送出去? 问题2:“CourseInfo CourseI

  • 问题内容: 问题在于确定以下符号之间的权衡: 基于JSON : 基于数组 : 关于同一问题的这篇文章,我已经决定(在前端)使用JSON对象表示法而不是对象数组,因为它符合我的要求,更好的性能和更少的浏览器代码。 但是问题在于列表本身不是静态的。我的意思是,该列表正在生成,即从DB(NoSQL)获取/存储,并通过服务器上的JavaAPI为新条目创建。我无法决定在后端应使用哪种表示法(最终也会影响UI

  • 这是第6章开始介绍 C++ 面向对象编程之前的最后一次面向对象设计任务:完成这个任务并学习第6章之后,就可以开始编写电梯模拟程序。要完成第2章定义的电梯模拟程序,就需要第6章、第7章和第8章介绍的 C++ 方法。然后用第9章和第10章介绍的继承和多态方法馅改电梯模拟程序。 本节介绍对象间的交互帮助读者把对象联系起来。也许读者在第2章、第3章和第4章开发实验室任务时增加了对象、属性和行为。 我们介绍

  • 假设我有一个变量,我想设置一些默认值。 这两种选择的好处/缺点是什么? 使用对象传播 或者用Object.assign 这就是让我好奇的promise。

  • 在处理EL表达式的标识符时,会先判断标识符是否为EL的内置对象,如果为EL的内置对象,则按内置对象来处理,如果不是EL内置对象,则会将表达式中的表示符当成域对象来处理。相当于pageContext.findAttribute方法返回域属性中的相应对象。如果标识符在域中未找到相应的对象,则什么都不会输出,也就是说返回结果为null。 表7.1列出了所有的EL内置对象及其作用。 表7.1 EL内置对象