У меня есть два Mono
-я, и я хотел бы вернуть / выбросить исключение, если одно не было пустым (пользователь уже существует), или вернуть значение Mono<User>
на основе другого (настройки копирования и данные DTO для объекта пользователя). Я написал:
public Mono<User> registerUser(UserRegistrationDto userRegistrationDto) {
Mono<Settings> settingsMono = settingsService.getSettings();
Mono<User> dbUserMono = userRepository.findByEmail(userRegistrationDto.getEmail());
return dbUserMono.map(dbUser -> Mono.error(new AlreadyRegisteredException())).or(
settingsMono.map(
settings -> validateDtoAndCreateUser(userRegistrationDto, settings)
).flatMap(userRepository::save)
);
Пользовательский репозиторий является хранилищем данных Spring ReactiveMongoRepository. Подпись validateDtoAndCreateUser: private User validateDtoAndCreateUser(UserRegistrationDto userRegistrationDto, SiteSettings siteSettings)
К сожалению на userRepository::save
Я получаю:
Bad return type in method reference: cannot convert reactor.core.publisher.Mono<S> to reactor.core.publisher.Mono<? extends R>
Что я делаю не так? Я где-то использую плохой оператор?