angular - Angular 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.
如何获得所有 ordersStatus < 7 然后按日期对订单进行排序?
解决方案
Cloud Firestore 要求您首先按应用范围过滤器的字段排序,然后按您选择的任何其他字段排序。
参考:https ://firebase.google.com/docs/firestore/query-data/order-limit-data
您可以通过创建范围过滤字段的复合索引和您要为正在查询的集合下一个排序的字段来实现此目的。
因此,在您的情况下,您需要使用and为orders
集合创建一个复合索引。orderStatus DESC
date DESC
参考:https ://firebase.google.com/docs/firestore/query-data/indexing
希望这是有用的。
推荐阅读
- snowflake-cloud-data-platform - 雪花模式中可以包含哪些对象?
- r - 嵌套在另一个变量中的子集行
- android - 为什么我的 BottomNavigationView 的项目标签在选择时会短暂消失?
- google-cloud-platform - 请求中的资源字段值无效
- python - 根据 julia 中的数据绘制 3d 表面(使用绘图)
- php - Nginx/Wordpress 重写配置
- r - 如何删除 data.frame 中的冗余行(按列 [1, 2],反之亦然)?
- java - java.lang.NullPointerException:火力基地
- node.js - 无法在 bitbucket 管道中运行 npm 命令
- android - 声纳与蜥蜴集成以跟踪 android studio 中失败的代码复杂性