【问题标题】:Firebase - Unable to sort and filter data at the same timeFirebase - 无法同时对数据进行排序和过滤
【发布时间】:2019-04-05 11:28:54
【问题描述】:

我使用 Firestore 作为我的数据库。我希望使用一个变量过滤我的数据,然后使用第二个变量按时间顺序对其进行排序。

我尝试实现此目的的代码如下:

firebase.firestore().collection('supervisorRequests')
  .where("supervisor", "==", this.props.currentUID)
  .orderBy("postDate", "desc")

对于上面的代码,我得到以下输出:

Firestore:操作被拒绝,因为系统未处于操作执行所需的状态。(firestore/failed-precondition)

如果我从查询中删除.orderBy.where,问题就会消失。

问题的原因是什么?为什么我不能同时使用两个“过滤器”?如何按照我请求的方式获取数据并避免最终手动排序?

【问题讨论】:

    标签: javascript firebase react-native google-cloud-firestore


    【解决方案1】:

    有时我对您的情况有这种错误:在一个字段中执行 orderby 并在另一个字段中执行 where

    对我有用的解决方案尝试(使用 android studio)是创建一个索引。要知道这个特定索引的相对链接,在终端中,我使用这个命令:

    adb logcat
    

    它会显示一个日志。您可以使用“crtl + c”取消此命令,然后向上滚动一点,您将看到要使用的确切链接。您复制此链接并将其粘贴到浏览器中。但是您必须首先在您的 firebase 控制台中进行身份验证。然后会出现一个模式询问您是否要创建此索引:您接受。

    或者,如果您愿意,您可以直接在 firebase 控制台中手动创建此索引。 Manage indexes in Cloud Firestore

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      相关资源
      最近更新 更多