Mono<Object>而不是Mono<ResponseEntity>(Java 8)

问题描述 投票:0回答:1

尝试练习 API 的反应式编码,但我很难理解在使用

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());
    }
  });
}

感谢所有帮助

java spring spring-webflux reactive-programming project-reactor
1个回答
2
投票

.flatMap()
你必须返回
Publisher
,而不是实际的对象

在此 if 语句中,您返回

ResponseEntity
而不是
Mono<ResponseEntity>

所以,用 Mono 包裹它就可以了

if (!exists) {
    return Mono.just(ResponseEntity.status(HttpStatus.BAD_REQUEST).build());
} else {
    // ...
© www.soinside.com 2019 - 2024. All rights reserved.