通过另一个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

解决方法

有很多解决此问题的方法,但其中一种是使用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));
}