將三種操作與WebFlux結合起來

Сan不知道如何組合三個相互依賴的操作。

我有一個新用戶需要保存到數據庫:

  1. 從基中獲取項。
      roleRepo.findByName("USER"); // return Mono<Role>
    
      user.setRole(...); // set result from roleRepo.findByName("USER") is String
    
  2. 使用第一次操作
          userRepo.save(user); // return Mono<User>
    
    的數據保存到庫中
  3. 保存到基新用戶角色
          UserRole uRole = new UserRole();
          urole.setUserId(user.getId); 
          urole.setRoleId(role.Id);  
          userRolesRepo.save(uRole) // return Mono<UserRole>
    

最后方法返回

 Mono<User>

to controller.

? 最佳回答:

使用flatmap組合異步操作。盡量像鏈條一樣使用它們,避免筑巢。

沒有測試,但這應該給你一個開端:

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()));
主站蜘蛛池模板: 国产一区二区三区无码免费| 成人无码AV一区二区| 无码精品人妻一区二区三区漫画| 国产成人一区二区三区视频免费| 亚洲国产一区二区视频网站| 精品视频无码一区二区三区| 丰满人妻一区二区三区视频53| 极品人妻少妇一区二区三区| 久久精品午夜一区二区福利| 三上悠亚日韩精品一区在线| 欧洲精品一区二区三区在线观看| 亚洲高清一区二区三区电影| 久久久久人妻精品一区| 无码一区二区三区免费| 制服丝袜一区二区三区| 国产成人精品无码一区二区三区 | 丝袜人妻一区二区三区| 亚洲色精品三区二区一区| 精品人妻系列无码一区二区三区| 国精无码欧精品亚洲一区| 久久精品无码一区二区三区日韩| 日韩一区二区三区视频| 男人免费视频一区二区在线观看| 午夜视频在线观看一区二区| 人妻视频一区二区三区免费| 亚洲AV无码一区二区三区久久精品| 3d动漫精品啪啪一区二区免费| 免费播放一区二区三区| 激情亚洲一区国产精品| 韩国精品一区二区三区无码视频 | 国产成人精品a视频一区| 日韩一区二区精品观看| 日本一区二区三区高清| 亚洲爆乳无码一区二区三区| 2020天堂中文字幕一区在线观| 亚洲视频免费一区| 久久精品无码一区二区三区不卡 | 97久久精品无码一区二区| 国产在线观看一区精品| 一本大道东京热无码一区| 骚片AV蜜桃精品一区|