Как мне получить доступ к элементу в потоке / Моно / и манипулировать им

#spring-webflux

#spring-webflux

Вопрос:

Мне нужно получить доступ к методу внутри класса, который находится внутри Mono. Как мне это сделать?

У меня есть:

  public Mono<LegalPerson> find(Long id) {
        return Optional.of(repository.findById(id)).orElseThrow(() -> new UserNotFoundException("Error"));
    }
  

И вот моя проблема:

    public void update(Mono<LegalPerson> legalPersonJson) {
        var legalPersonDB = find(legalPersonJson.map(legalPerson -> legalPerson.getId()));
  

Я получаю следующую ошибку:

 Incompatible types. Required Long but 'map' was inferred to Mono<R>: no instance(s) of type variable(s) R exist so that Mono<R> conforms to Long
  

Ответ №1:

Это то, что вам нужно сделать

 Mono<Long> legalPersonDB = legalPersonJson.map(legalPerson -> find(legalPerson.getId()))
  

Вам все равно нужно будет подписаться на Mono, чтобы он выполнялся.