Firebase Firestore规则-仅允许使用orderBy的列表

Firebase Firestore规则-仅允许使用orderBy的列表,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我有以下Firestore结构: reports/{reportId}: { ... createdAt: Timestamp updatedAt: Timestamp } 在我的Ionic(Angular)应用程序中,我获取如下结果: this.afs .collection('reports') .orderBy('createdAt', 'desc') .limit(180) 在我的规则中,我写了以下规则: /reports/{reportId} { all

我有以下Firestore结构:

reports/{reportId}: {
  ...
  createdAt: Timestamp
  updatedAt: Timestamp
}
在我的Ionic(Angular)应用程序中,我获取如下结果:

this.afs
  .collection('reports')
  .orderBy('createdAt', 'desc')
  .limit(180)
在我的规则中,我写了以下规则:

/reports/{reportId} {
  allow list: if request.query.limit && request.query.limit == 180
}

此规则允许列出数据,只要限制为180个文档。问题是,如何通过
createdAt
作为
desc
强制执行查询以进行排序?根据there's
request.query.orderBy
,但是没有解释如何使用它

没错,目前基本上没有关于它的文档

request.query.orderBy
是一个映射,其中字段是值被排序的键的名称,映射的值是“ASC”或“DESC”。因此,您的规则如下所示:

/reports/{reportId} {
  allow list: if request.query.limit &&
                 request.query.limit == 180 &&
                 request.query.orderBy.createdAt == "DESC"
}

请记住,
request.query.orderBy
的当前实现存在严重问题。查询可以包含多个orderBy子句,它们的顺序非常重要。但是,目前无法确定安全规则中的顺序鉴于此缺点,将来可能会删除或更改
request.query.orderBy

很抱歉没有解释。我已经更新了我的问题。