我使用SpringBoot,并且有一些响应式API(控制器调用服务,该服务基于MongoReactiveRepositories调用存储库)
由于我不希望用户直接看到我的模型对象,所以我想拥有DTO。
一个DTO可以基于多个模型的信息。
例如:给定两个模型项
ItemA:
infoA:String
ItemB:
infoB:String
我要创建一个DTO项目
ObjectDTO:
infoA: String
infoB: List<ItemB>
在我的对象模型和DTO之间反应性映射数据的正确方法是什么?
答案 0 :(得分:0)
只需使用Mono.zip(https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#zip-reactor.core.publisher.Mono-reactor.core.publisher.Mono-java.util.function.BiFunction-)将2个结果合并为一个。
return Mono.zip(repo1.getItemA(), repo2.getItemB(),
(itemA, itemB) -> new ObjectDTO(itemA.getInfoA(), itemB.getInfoB())
);
返回itemA和itemB的方法当然应该返回Mono
。