【问题标题】:Is there any way to use OR query with Firestore RecyclerAdapter?有什么方法可以对 Firestore RecyclerAdapter 使用 OR 查询?
【发布时间】:2019-09-07 08:40:08
【问题描述】:

我有一个使用 Firestore Recyclerview Adapter 的 recyclerview,现在我想使用 OR 查询显示列表。 例如,我想使用查询显示处于“待定”状态或“已分配”状态的列表。我知道firestore没有内置OR查询,但无论如何我想实现这一点。任何替代解决方案。

我在 firestore db 中存储了 4 种状态:Pending、Assigned、Accepted 和 Completed。 只想显示待处理或已分配

下面是我的代码:

    Query query = requestVehiclesCollectionReference
            .whereEqualTo("clientId", id)
     // show list which are in Pending state or Assigned state
            .whereEqualTo("status", "Pending")
            .orderBy("createdAt", Query.Direction.DESCENDING);


    FirestoreRecyclerOptions<Item> options = new 
    FirestoreRecyclerOptions.Builder<Item>()
            .setQuery(query, Item.class)
            .build();

【问题讨论】:

  • 只需使用两个查询,一个用于待处理,一个用于分配。然后,您必须验证要在查询之外使用其中的哪一个。
  • 将所有数据带入一次,并将 if 条件放入数据中。
  • 如何在 FirestoreRecyclerOptions 中设置两个查询,因为它只支持一个查询?
  • @Fortray 例如,您可以使用 if 语句。只需尝试找出它最适合您的用例。

标签: android google-cloud-firestore


【解决方案1】:

Firestore 不支持带有 OR 条件的查询。见:

常见的解决方法是使用多个查询(每个条件一个)并将结果合并到您的应用程序代码中。

FirebaseUI 的适配器显示来自单个查询或集合的数据。他们无法显示来自多个查询/集合的结果。

根据这种组合,您无法使用单个 FirebaseUI 适配器显示来自 OR 条件的数据。您必须为此创建自己的适配器,尽管您当然可以使用(开源)FirebaseUI 适配器来获得灵感。

【讨论】:

    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 2016-08-31
    • 2021-04-27
    • 2021-11-24
    • 2019-07-06
    • 2018-03-25
    • 1970-01-01
    相关资源
    最近更新 更多