java - 映射时返回 Mono<Object> 而不是 Mono<ResponseEntity> (Java 8)

标签 java spring spring-webflux reactive-programming project-reactor

尝试为 API 练习响应式(Reactive)编码,但我很难理解在使用 flatMap() 时我做错了什么和map()转换到 ResponseEntity目的。该错误提到代码返回 Mono<Object>并且不能被类型转换/转变为 Mono<ResponseEntity<>> .

Public Mono<ResponseEntity<?> deleteEndpoint(String someId) {
  return db.existsById(someId).flatMap(exists -> {
    if (!exists) return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
    else {
      Mono<Boolean> deletedStuff1 = someFunct();
      Mono<Boolean> deletedStuff2 = anotherFunct();
     
      Mono<Tuple2<Boolean, Boolean>> deletedStuff = Mono.zip(deletedStuff1, deletedStuff2);

      return deletedStuff.then(Mono.just(ResponseEntity.status(NO_CONTENT).build());
    }
  });
}

感谢所有帮助

最佳答案

来自 .flatMap()您必须返回Publisher ,不是实际物体

在此 if 语句中,您返回 ResponseEntity而不是Mono<ResponseEntity>

所以,用 Mono 包裹它

if (!exists) {
    return Mono.just(ResponseEntity.status(HttpStatus.BAD_REQUEST).build());
} else {
    // ...

关于java - 映射时返回 Mono<Object> 而不是 Mono<ResponseEntity> (Java 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75025066/

相关文章:

java - android中如何通过intent发送大的json数据

java - JRE 6U24 的 JTable HTML 字体显示问题

java - 在 OpenJPA 中使用 map 查询实体

java - 如何为整个 Spring Framework Controller 发送相同的 header ?

java - 如何在 Webflux 功能端点测试中禁用 Spring Security

java - java 检测返回的大小单位

java - Spring重定向请求映射

java - Spring - hibernate 错误

java - 如何访问WebFlux服务中的WebSession?

spring-boot - 如何调试永远无法完成的 Mono