【发布时间】:2020-07-17 21:33:35
【问题描述】:
我正在使用 Spring Web Flux 创建一个用于学习目的的 Web 应用程序,我有一个函数,它首先检查记录是否存在,然后更新它,否则它会抛出自定义 NotFoundException。问题是当我返回 Mono 时,控制器会抛出 404 错误,但是当我返回更新的类对象时,它运行良好,我不想返回整个对象。
以下代码运行良好
public Mono<Application> publish(String id,boolean publish)
{
return appRepository.findById(id).flatMap( a -> {
a.setPublished(publish);
return appRepository.save(a);
}).switchIfEmpty( Mono.error(new NotFoundException("Application Not Found")));
}
及以下发生404错误的代码
public Mono<Void> publish(String id,boolean publish)
{
return appRepository.findById(id).flatMap( a -> {
a.setPublished(publish);
appRepository.save(a);
return Mono.empty().then();
}).switchIfEmpty( Mono.error(new NotFoundException("Application Not Found")));
}
我已经从 ReactiveMongoRepository 扩展了存储库,控制器类只是调用服务函数
@PutMapping(APP_ROOT_URL + "/{id}/publish")
public Mono<Void> publish(@PathVariable("id") String id)
{
return appService.publish(id, true);
}
【问题讨论】:
-
请添加语言和平台作为标签。
-
@Haider 希望我的回答能消除你的疑惑。
-
@AbhinabaChakraborty 是的,非常感谢。
标签: java spring-webflux