我正在使用两个具有扁平数据结构的存储库,例如“MenuItemRepo”和“IngredEnterpo”。它们之间的关系结构是:一个菜单项可以包含许多成分,而一种成分(例如奶酪)可以是许多菜单项的一部分。数据库表的建模如下:
>
MenuItem表条目
MenuItem成分参考表条目
成分表条目
我是否可以使用RxJava仅从[MenuItem流]中选择MenuItem元素,其中MenuItem id与[MenuItem成分引用流]中的特定成分id匹配?
我使用. filter()运算符根据它自己的属性在一个Flowable流中选择元素(例如。获取所有不含麸质的成分):
mIngredientsRepo.getItems()
.flatMap(Flowable::fromIterable)
.filter(ingredient-> ingredient.isGlutenFree)
.toList() ....
这是为了获取所有无麸质成分的列表。但是在这种情况下,MenuItem流不存储成分ID。本质上,我想看看是否可以进行类似SQL的JOIN过滤,以及它是否可以在RxJava中保持优雅。
目前,我已经使用SQLite连接语句在存储库级别实现了。我想在RxJava中探索更直观和可维护的选项。
PS:此数据结构用于本地和远程,也用于Firebase,这就是结构平坦的原因之一。
您可以收集()
这些成分ID到HashSet
中,然后在菜单项流中,使用filter()
与包含
检查:
mIngredientsRepo.getItems()
.flatMapIterable(v -> v)
.collect(HashSet::new, (a, b) -> a.add(b.id))
.flatMapPublisher(set -> menuitems.filter(mi -> set.contains(mi.id))
我有一个id列表,并且有一个方法,它接受id并返回可观察的 假设我有用户id(1),我需要使用此方法更新他的配置文件
我有一个关于Spring WebFlux和Reactor的问题。我试图编写一个简单的场景,其中在GETendpoint中,我返回一个表示实体的DTO流,这些实体中的每一个都有一个表示另一个实体的其他DTO的集合。以下是详细信息。 我有两个实体,Person和Song,定义如下: 这些实体由以下DTO表示: 我的服务(为了简洁起见,这里没有显示)确实返回Mono和flux。然后我就有了以下RESTC
假设有一个 类如下所示: 现在我有一个< code>Person元素的< code>Stream,该流可能包含多个< code>Person实例,这些实例具有相同的< code>id,但具有不同的< code>discriminator值,即< code>[Person{"id": 1," discriminator": "A"},Person{"id": 1," discriminator":
在一个服务中,我有两个API调用,每个调用都返回一个可观察的,在我的组件中,我有一些条件,如果为true,我必须调用这两个函数,但我需要等待get()调用,这样我就可以使用get调用返回的参数执行post函数。如果为false,我只想用已经定义的参数调用post函数。 服务: 组成部分: 我不想重复帖子调用的代码,或者如果不可能的话,只是不要在另一个订阅()中使用订阅()。我怎么能这么做?没有异步
我有这个问题,我一直在寻找,但找不到解决方案(或者也许我不能根据其他答案做出解决方案)。 我的问题是,我需要找到一种方法来等待可观察的(有自己的订户)并等待另一个可观察的(有自己的订户)完成。 场景是这样的: 奥布1- 奥布斯2 - 我主要担心的是我需要两个订阅者。在我看来,obs1 和 obs2 并行运行,但需要检查 obs1 是否以新的会话令牌完成。也许这不是RxJava的主要目的。 Obs1
我在创建一个将返回对象列表的可观察对象时遇到了麻烦。我有一个ID列表,想对我的数据库提出一个请求。在这种情况下,我使用的是Firebase。当得到一个结果时,我希望将这些对象中的每一个编译成一个列表,然后返回该列表。我需要在返回之前等待所有的对象都返回。我在我的视图模型反序列化器类中这样做。这是我的代码。 有几种方法可以从firebase数据库中返回数据,我可以返回Documentsnapshot