问题描述
亲爱的, 我对实现一个函数(基本上是一个更新操作)感到困惑,该函数能够将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
解决方法
有很多解决此问题的方法,但其中一种是使用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));
}