Обновление объекта Mono другим объектом Mono

Уважаемые, я застрял в реализации функции (это в основном операция обновления), которая может принимать Mono в качестве параметра и возвращать обновленную версию Mono, где:

  • возвращенный экземпляр является производным от запроса базы данных;
  • обновленная версия Mono содержит поля, выбранные Mono.

Это пример кода (который работает, предоставляя объект напрямую, без использования экземпляра Mono:

public Mono<CompanyDto> updateById(String id, CompanyDto companyDtoMono) {
    return getCompanyById(id).map(companyEntity -> {
        companyEntity.setDescription(companyDtoMono.getDescription());
        companyEntity.setName(companyDtoMono.getName());
        return companyEntity;
    }).flatMap(companyEntity2 -> reactiveNeo4JTemplate.save(companyEntity2)).map(companyEntity -> companyMapper.toDto(companyEntity));

}`

Вопрос: как мне изменить код, если подпись функции будет

public Mono<CompanyDto> updateById(String id, Mono<CompanyDto> companyDtoMono)

PS:

getCompanyById(id)

возвращает

Mono<CompanyEntity>

Спасибо лучше всего

FB

1 ответ

Решение

Есть много решений этой проблемы, но одно из них - использование Zip.

    public Mono<CompanyDto>  updateById(String id, Mono<CompanyDto> companyDtoMono){
 return    Mono.zip(getCompanyById(id),companyDtoMono,(companyEntity, companyDto) -> {
        companyEntity.setDescription(companyDto.getDescription());
        companyEntity.setName(companyDto.getName());
        return companyEntity;
    })
         .flatMap(companyEntity2 -> reactiveNeo4JTemplate.save(companyEntity2))
         .map(companyEntity -> companyMapper.toDto(companyEntity));
}
Другие вопросы по тегам