你好,我有这个操作
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)))); }