我开始探索反应世界。在我的微服务项目中,我正在使用Project Reactor和反应式Cassandra存储库。
我写了一个简单的DELETE处理程序方法:我通过id检索用户,检查它是否是DELETED
(按状态过滤)和:
DELETED
,则返回notFound()
(无法删除标记为DELETED
的用户)DELETED
并更新实体问题在于更新不是数据库更改(即使已执行存储库中的方法)。是什么原因导致这种奇怪的行为?
这是我的代码:
@Override
public Mono<ServerResponse> handle(ServerRequest serverRequest) {
String userId = serverRequest.pathVariable(PATH_PARAM_ID);
return Mono.just(userId)
.map(casandraRepository::findById)
.flatMap(detailsMono -> detailsMono.filter(details -> !details.getDeleted()))
.map(this::getResponsePayload)
.defaultIfEmpty(notFound().build())
.flatMap(serverResponseMono -> serverResponseMono);
}
private Mono<ServerResponse> getResponsePayload(User details){
User markedDetails = details.toBuilder().deleted(Boolean.TRUE).build();
casandraRepository.save(markedDetails);
return noContent().build();
}