当前位置: 首页 > 知识库问答 >
问题:

Smallrye兵变中的switchIfEmpty替代方案是什么

宋高寒
2023-03-14

在RxJava 2和Reactor中,如果当前流中没有元素,则有一种类似switchIfEmpty的方法来切换到新流。

但是当我开始使用Minute时,当我将Quarkus样本转换为使用反应特性时,我找不到替代方法。

目前我的解决方案是:在我的PostRepository中,我使用一个异常来表示没有找到帖子。

 public Uni<Post> findById(UUID id) {
        return this.client
                .preparedQuery("SELECT * FROM posts WHERE id=$1", Tuple.of(id))
                .map(RowSet::iterator)
                .flatMap(it -> it.hasNext() ? Uni.createFrom().item(rowToPost(it.next())) : Uni.createFrom().failure(()-> new PostNotFoundException()));
    }

并在PostResources中捕获它。

@Path("{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Uni<Response> getPostById(@PathParam("id") final String id) {
        return this.posts.findById(UUID.fromString(id))
                .map(data -> ok(data).build())
                .onFailure(PostNotFoundException.class).recoverWithItem(status(Status.NOT_FOUND).build());
    }

如何在PostRepository中返回Uni表示0或1元素,并在PostResources中使用类似SwitchIf掏空的方法来构建流的替代路径?

共有1个答案

庄瀚玥
2023-03-14

Uni不能为空,因为它总是包含一个项目(可能null)。

因此,switchiffempty的等价物是uni。onItem()。ifNull()。切换到(()-

 类似资料:
  • 问题内容: 我们有一个类,其中包含应用程序的配置信息。它曾经是一个单身人士。经过一些体系结构审查后,我们被告知删除单例。我们确实看到了在单元测试中不使用单例的一些好处,因为我们可以一次测试所有不同的配置。 没有单例,我们必须在代码中的所有地方传递实例。变得太乱了,所以我们写了一个单例包装器。现在我们将相同的代码移植到PHP和.NET,我想知道是否有更好的模式可用于配置对象。 问题答案: 在谷歌测试

  • RxJava中是否有与RxAndroid中的AndroidSchedulers.mainThread()同义的Scheduler api。因此,如果我在一个新线程上安排一个任务,并且我想在Java主线程上观察它,我将如何做到这一点? 下面的edit是一个RxSubscription示例,带有system。在注释中,主线程被终止,而可观察线程被终止。interval在单独的线程上运行。在Androi

  • 我正在努力翻阅这本生锈的书。在“字符串”一章中,许多示例使用了_string(),我的编译器版本(rustc 1.0.0-dev)给出了以下警告 代码: 我从这个问题中了解到,这是因为API可能会更改,但我想知道如果我想转换字符串片段(str),我应该使用什么来代替它

  • 问题内容: 当我使用MSTest Framework并复制Selenium IDE为我生成的代码时,MSTest无法识别和。有什么替代方法? 问题答案: 您将分别使用和。

  • 我正在使用Java SDK在HarmonyOS中创建一个自定义组件。在那里我必须为动画组件的动画工作。我必须在int值之间动画组件。为此,我需要AnimatorValue的实例(在Android ValueAnimator中)。 在Android中,我们可以创建ValueAnimator的实例并传递int值,如下所示: 但是,在HMOS中,我可以使用下面的代码创建AnimatorValue的实例:

  • 问题内容: 我有一个字符串数组,每个字符串包含3个字母。每3个字母(每个元素)对应一个唯一字母。我需要从字符串数组创建一个char数组。 我能想到的唯一方法是遍历字符串数组中的每个元素,并使用一个长的switch语句来确定其关联的单个字符。 还有什么其他方法可以实现? 问题答案: 如果是映射/查找,那么通常地图/词典可以解决您的问题。C#中的此类结构示例: 如果有这样的映射,则只需从映射中查找字母