Angular Firestore集合查询和排序依据

时间:2019-09-12 17:38:11

标签: angular typescript firebase google-cloud-firestore

我正在执行一个简单的查询,然后想按日期排序。

这很好用:

this.afs.collection('orders', ref=> ref.where('orderStatus', '<', 7));

当我要过滤orderStaus <7然后按日期对其进行排序时,这将引发错误。

this.afs.collection('orders', ref=> ref.where('orderStatus', '<', 7).orderBy('date', 'desc'));

这是我的错误:

You have a where filter with an inequality (<, <=, >, or >=) on field 'orderStatus' and so you must also use 'orderStatus' as your first Query.orderBy(), but your first Query.orderBy() is on field 'date' instead.

如何获得所有的订单状态<7,然后按日期对订单进行排序?

1 个答案:

答案 0 :(得分:0)

Cloud Firestore要求您首先根据要应用范围过滤器的字段进行排序,然后再根据您选择的任何其他字段进行排序。

参考https://firebase.google.com/docs/firestore/query-data/order-limit-data

您可以通过创建范围过滤器字段的复合索引以及要查询的集合的下一个要排序的字段来实现此目的。

因此,在您的情况下,您需要使用ordersorderStatus DESCdate DESC集合创建复合索引。

参考https://firebase.google.com/docs/firestore/query-data/indexing

希望这很有用。