Обновление объекта 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));
}