我正在执行一个简单的查询,然后想按日期订购。
这是非常好的:
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.如何获得所有的ordersStatus <7,然后按日期对订单进行排序?
发布于 2019-09-13 04:43:18
云修复要求您先按要在其上应用范围筛选器的字段进行排序,然后根据您选择的任何其他字段进行排序。
参考:https://firebase.google.com/docs/firestore/query-data/order-limit-data
您可以通过为要查询的集合创建范围筛选字段的复合索引和下一步要订购的字段来实现这一点。
因此,在您的示例中,您需要使用orderStatus DESC和date DESC为orderStatus DESC集合创建一个复合索引。
参考:https://firebase.google.com/docs/firestore/query-data/indexing
希望这是有用的。
https://stackoverflow.com/questions/57911966
复制相似问题