以正确的方式处理和返回Mono错误-java reactor代码
我有这样一个DTO类:以正确的方式处理和返回Mono错误-java reactor代码,java,spring-webflux,Java,Spring Webflux,我有这样一个DTO类: public class User { @Field("id") private String id; private String userName; private String emailId; } public Mono<User> removeUserDetails(User userObj) { return findByUsername(userObj.getUsernam
public class User {
@Field("id")
private String id;
private String userName;
private String emailId;
}
public Mono<User> removeUserDetails(User userObj) {
return findByUsername(userObj.getUsername())
.flatMap(existingUser -> {
// logic to delete the data from database which working as expected
}).switchIfEmpty(
Mono.defer(() -> {
return Mono.error(new Exception("User Name " + userObj.getUsername() + " doesn't exist."));
})
);
}
我必须通过API提供更新和删除功能
我编写了以下代码来删除记录:
public Mono<String> userData(User body) {
repo.removeUserDetails(userObj).subscribe();
return Mono.just("Remove Successful");
}
公共Mono用户数据(用户主体){
repo.removeUserDetails(userObj.subscribe();
返回Mono.just(“删除成功”);
}
RemoveUserDetails方法如下所示:
public class User {
@Field("id")
private String id;
private String userName;
private String emailId;
}
public Mono<User> removeUserDetails(User userObj) {
return findByUsername(userObj.getUsername())
.flatMap(existingUser -> {
// logic to delete the data from database which working as expected
}).switchIfEmpty(
Mono.defer(() -> {
return Mono.error(new Exception("User Name " + userObj.getUsername() + " doesn't exist."));
})
);
}
public Mono removeUserDetails(用户userObj){
返回findByUsername(userObj.getUsername())
.flatMap(现有用户->{
//从数据库中删除按预期工作的数据的逻辑
}).switchIfEmpty(
单声道延迟(()->{
返回Mono.error(新异常(“用户名”+userObj.getUsername()+“不存在”);
})
);
}
这段代码的问题是,即使用户不存在,它也不会显示我返回的Mono错误。在任何情况下,都会返回“Remove Successful”。
如何更改我的服务层方法,使其能够返回repo方法接收到的内容。我对反应堆代码还不熟悉,所以不知道怎么写。任何帮助或指导都是高度赞赏的。谢谢 P >每当你打电话订阅时,都认为它是立即的红旗。订阅应该由您正在使用的框架来处理(本例中为Webflux) 如果您自己订阅,如本例中所示:
public Mono<String> userData(User body) {
repo.removeUserDetails(userObj).subscribe();
return Mono.just("Remove Successful");
}
…如果删除成功,这将为您提供一个标准的完成,否则将显示一个错误信号。@K.Nicholas,如果您能提及代码中的错误,我将不胜感激。回答不接受。为什么要费心向漠不关心的人解释显而易见的事情呢?如果你喜欢和机器人聊天,也许你也会喜欢reddit。