Eli*_*hen 3 firebase firebase-security google-cloud-firestore
我有以下 Firestore 结构:
reports/{reportId}: {
...
createdAt: Timestamp
updatedAt: Timestamp
}
Run Code Online (Sandbox Code Playgroud)
在我的 Ionic(Angular)应用程序中,我获取结果如下:
this.afs
.collection('reports')
.orderBy('createdAt', 'desc')
.limit(180)
Run Code Online (Sandbox Code Playgroud)
在我的规则中,我写了以下规则:
/reports/{reportId} {
allow list: if request.query.limit && request.query.limit == 180
}
Run Code Online (Sandbox Code Playgroud)
只要有 180 个文档的限制,此规则就允许列出数据。问题是,如何强制查询按createdAt
as排序desc
?根据文档有request.query.orderBy
,但没有解释如何使用它
你是对的,目前这方面的文档基本上不存在。
request.query.orderBy
是一个 Map,其中字段是其值被排序的键的名称,并且映射的值是“ASC”或“DESC”。所以,你的规则看起来像这样:
/reports/{reportId} {
allow list: if request.query.limit &&
request.query.limit == 180 &&
request.query.orderBy.createdAt == "DESC"
}
Run Code Online (Sandbox Code Playgroud)
请记住,当前的实施request.query.orderBy
存在重大问题。一个查询可以包含多个 orderBy 子句,并且它们的顺序非常重要。但是,目前无法确定安全规则中的顺序。 鉴于此缺点,将来可能会被删除或更改。request.query.orderBy
归档时间: |
|
查看次数: |
415 次 |
最近记录: |