Как правильно создавать DTO в реактивной манере? - PullRequest
0 голосов
/ 05 апреля 2019

Я использую SpringBoot, и у меня есть некоторые Reactive API (контроллер вызывает службу, которая вызывает хранилище на основе MongoReactiveRepositories)

Поскольку я не хочу, чтобы пользователь непосредственно видел объекты моей модели, я хотел бы иметь DTO.

Один DTO может основываться на информации нескольких моделей.

Пример: дано два элемента модели

ItemA:
 infoA:String

ItemB:
 infoB:String

Я хочу создать один элемент DTO

ObjectDTO:
 infoA: String
 infoB: List<ItemB>

Как правильно отобразить данные между моей моделью объектов и DTO?

1 Ответ

0 голосов
/ 06 апреля 2019

Просто используйте 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.

...