Firebase-无法同时排序和过滤数据

时间:2019-04-05 11:28:55

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

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

我要尝试实现的代码如下:

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

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

  

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

adb logcat

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

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