我需要用弹簧反应器以反应方式连接数据库。下面是我想要得到的场景->
1. Join those two into single response and send back to the user as String
由于所有对象都是唯一的,所以我计划使用Mono
Mono<Response1> r1 = qrepo.findByID(id)
Mono<Response2> r2 = qrepo.findByID(r1.getParam())
Mono<String> combined = Mono.when(r1, r2).map(t -> {
StringBuffer sb = new StringBuffer();
sb.append(r1.getProp1());
sb.append(r2.getProp2());但这对我来说不太好
发布于 2018-10-16 11:07:21
您应该获得response1,然后将其结果传递给flatMap访问参数并传递给存储库,然后将结果映射到字符串。
Mono<String> resultMono = qrepo.findByID(id)
.flatMap(response1 -> qrepo.findByID(response1.getParam())
.map(response2 -> {
StringBuilder sb = new StringBuilder();
sb.append(response1.getProp1());
sb.append(response2.getProp2());
return sb.toString();
}));发布于 2020-03-16 10:43:14
使用Mono.zip
示例:
Mono.zip(Mono.just("hello"), Mono.just("world")).map(tuple2 -> {
return tuple2.getT1() + tuple2.getT2();
});Mono.zip将给定的monos聚合到一个新的Mono中,当所有给定的Monos都生成了一个项目时,这个新的Mono就会被实现。
https://stackoverflow.com/questions/52833719
复制相似问题