检查记录是否有数据Spring Reactive Web



你好,我有这个操作

User user = this.userRepository.findById(userId).block();
return createOrUpdate(user, userId, name);

private Mono<User> createOrUpdate(User user, String userId, String name) {
if (user == null) {
System.out.println("Creating New");
return userRepository.save(new User(null, userId, name));
}
System.out.println("UPDATING");
return userRepository.save(new User(user.id(), userId, name));
}
return Mono.just(user);
}

有没有一种方法可以做到这一点而不阻塞User user = this.userRepository.findById(userId).block();

您可以尝试以下代码:

public Mono<User> createOrUpdate(String userId, String name) {
return userRepository.findById(userId)
.flatMap(u -> userRepository.save(new User(u.getId(), userId, name)))
.switchIfEmpty(Mono.defer(() -> userRepository.save(new User(null, userId, name))));
}

最新更新