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

将三个操作与WebFlux相结合

胡越
2023-03-14

我不明白如何结合三个相互依赖的操作。

我有新用户需要保存到基地:

>

  • 从基础获取项目。

      roleRepo.findByName("USER"); // return Mono<Role>
    
      user.setRole(...); // set result from roleRepo.findByName("USER") is String
    

    将第一次操作的数据保存到数据库中

          userRepo.save(user); // return Mono<User>
    

    保存到基本的新用户角色

          UserRole uRole = new UserRole();
          urole.setUserId(user.getId); 
          urole.setRoleId(role.Id);  
          userRolesRepo.save(uRole) // return Mono<UserRole>
    

    最后,方法返回

     Mono<User>
    

    到控制器。

  • 共有1个答案

    李光华
    2023-03-14

    通过使用平面图合并异步操作。尽量像锁链一样使用它们,避免嵌套。

    没有测试,但这应该给你一个开端:

    java prettyprint-override">roleRepo.findByName("USER")
            .flatMap(role -> {
                user.setRole(role);
                return Mono.just(user);
            })
            .flatMap(user -> userRepo.save(user))
            .flatMap(user -> {
                UserRole uRole = new UserRole();
                urole.setUserId(user.getId); 
                urole.setRoleId(role.Id);
                return Mono.zip(Mono.just(user), userRolesRepo.save(uRole));
            })
            .flatMap(data -> Mono.just(data.getT1()));
    
     类似资料:
    • 我正在尝试根据先前Web请求的结果下载一个文件(或多个文件)。下载文件后,我需要将之前的Mono结果(and)和文件发送到另一个系统。到目前为止,我一直在使用平面地图和Monos。但是当读取大文件时,我无法在文件下载期间使用Mono,因为缓冲区太小。 简化后的代码如下所示: DMS服务。search(),,all返回特定类型的Mono<代码>DMS服务。getDocument(objectId)返

    • 我想创建一个SpringWebFlux服务,它将两个源的数据与一个依赖项相结合。我是Webflux的新手,所以我不知道怎么做。下面是一些伪代码来说明我要做的事情: 的结果包括我想用查找的数据的标识符。至少我想处理这两个数据集。我可以使用什么方法代替第一个?

    • 想象我们有两个数组: 获取包含两者相乘值的第三个String数组的更好方法是什么?比如: 我知道,我可以使用循环并将1中的每个元素与2中的每个元素连接起来,并将结果放入3中。但实际上和中的元素要多得多。Java中是否有专门的工具使其更有效?

    • 我正在学习使用RxAndroid库的RxJava,同时使用改型来进行联网,并使用RetroLambda来使用Java8 lambdas。 我希望构建的应用程序具有以下功能: 允许用户键入对Wikipedia API的查询 我让它像这样工作: 现在,我想添加一个新的小部件,允许我的维基百科查询使用另一种语言。现在,我将选择一个开关,以“en”或“nl”作为维基百科url的前缀。 所以我从开关中创建了

    • 我试图用相同的观察者观察两个请求。我的: 我的请求是使用Reformation 2构建的登录请求: 现在我想启动2个或更多请求并在中逐个检查响应,当检查最后一个请求时,使用我的执行。有人能帮我吗? 提前致谢。

    • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断与系统调用 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 由计算机硬件异常或故障引起的中断,称为内部异常中断; 由程序中执行了引起中断