Spring MongodbReactive当结果为空时该怎么办
如果在数据库中找不到电子邮件,findByEmail将返回null,因此会中断所有进程Spring MongodbReactive当结果为空时该怎么办,spring,spring-boot,spring-webflux,Spring,Spring Boot,Spring Webflux,如果在数据库中找不到电子邮件,findByEmail将返回null,因此会中断所有进程 public Mono<UserDto> findByEmail(String email) { return this.userRepository.findByEmail(email) // <---- ERROR HERE .map(userEntity -> userMapper.toDto(userEntity)) // <---- E
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 findByEmail(字符串电子邮件){
返回此.userRepository.findByEmail(电子邮件)//userMapper.toDto(userEntity))//
this.findByEmail(userFacebookDto.getEmail())
.map(userDbDto->{
字符串标记=”;
if(isNull(userDbDto)){
UserEntity UserEntity=this.userFacebookMapper.toEntity(userFacebookDto);
this.userRepository.save(userEntity)
.map(ue->this.jwtTokenUtil.generateToken(ue));
}否则{
token=jwtTokenUtil.generateToken(this.userMapper.toEntity(null));
}
返回令牌;
})
);
}
对于这种情况,您认为什么是好的链接策略,以便继续执行其余代码
错误:
“映射程序返回了一个空单声道”请澄清:1。作为
findByEmail
参数的电子邮件传递是否为空?或者,userRepository.findByEmail(电子邮件)
返回空值?2.还有一个问题,userRepository.findByEmail(email)
在未找到userEntity
时返回什么?被动mongo存储库不应返回null,因此您的问题可能存在于其他地方。要找到确切的位置,可以启用调试模式。请参阅:@MartinTarjányi如果mongo存储库没有找到什么东西,它会返回什么?@TaoufikJabbari它会返回空的Mono。@MartinTarjányi空的Mono不是空的?如果它转到下一个。映射它在输入中得到什么?一个空的?请解释findById将如何发送mono.empty,然后发送next.map或.flatMap。他将在其中的lamba参数中获得什么?请澄清:1。作为findByEmail
参数的电子邮件传递是否为空?或者,userRepository.findByEmail(电子邮件)
返回空值?2.还有一个问题,userRepository.findByEmail(email)
在未找到userEntity
时返回什么?被动mongo存储库不应返回null,因此您的问题可能存在于其他地方。要找到确切的位置,可以启用调试模式。请参阅:@MartinTarjányi如果mongo存储库没有找到什么东西,它会返回什么?@TaoufikJabbari它会返回空的Mono。@MartinTarjányi空的Mono不是空的?如果它转到下一个。映射它在输入中得到什么?一个空的?请解释findById将如何发送mono.empty,然后发送next.map或.flatMap。他将在其中的lamba参数中得到什么?