С不知道如何组合三个相互依赖的操作。
我有新用户需要保存到基地:
-
从基础中获取项目。
roleRepo.findByName("USER"); // return Mono<Role> user.setRole(...); // set result from roleRepo.findByName("USER") is String
-
将第一次操作的数据保存到基地
userRepo.save(user); // return Mono<User>
-
保存到基本新UserRole
UserRole uRole = new UserRole(); urole.setUserId(user.getId); urole.setRoleId(role.Id); userRolesRepo.save(uRole) // return Mono<UserRole>
最后方法返回
Mono<User>
至控制器。
使用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()));