Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以正确的方式处理和返回Mono错误-java reactor代码_Java_Spring Webflux - Fatal编程技术网

以正确的方式处理和返回Mono错误-java reactor代码

以正确的方式处理和返回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

我有这样一个DTO类:

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。