MongodbReactive что делать, когда у вас пустой результат - PullRequest
1 голос
/ 17 апреля 2020

Если в базе данных не было найдено ни одного электронного письма, 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»

...