Если в базе данных не было найдено ни одного электронного письма, findByEmail возвращает ноль, поэтому он прерывает весь процесс
public Mono<UserDto> findByEmail(String email) {
return this.userRepository.findByEmail(email) // <---- ERROR HERE
.map(userEntity -> userMapper.toDto(userEntity)) // <---- ERROR HERE
.switchIfEmpty(Mono.empty());
}
@Override
public Mono<String> authenticate(String accessToken) {
return this.facebookService.verifyAccessToken(accessToken)
.flatMap(userFacebookDto ->
this.findByEmail(userFacebookDto.getEmail())
.map(userDbDto -> {
String token = "";
if (isNull(userDbDto)) {
UserEntity userEntity = this.userFacebookMapper.toEntity(userFacebookDto);
this.userRepository.save(userEntity)
.map(ue -> this.jwtTokenUtil.generateToken(ue));
} else {
token = jwtTokenUtil.generateToken(this.userMapper.toEntity(null));
}
return token;
})
);
}
Какова, на ваш взгляд, хорошая стратегия формирования цепочки для этого случая, чтобы продолжить выполнение остальной части кода?
Ошибка: «Картограф вернул ноль Mono»