Firebase Firestore规则-仅允许使用orderBy的列表
我有以下Firestore结构: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
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'srequest.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
。很抱歉没有解释。我已经更新了我的问题。