Firestore规则 - request.query.limit拒绝列表集合

问题描述 投票:0回答:1

我在我的Firestore数据库中有一个名为reports

在我的Angular应用程序中,我允许在一个查询中仅获取10个结果:

angularFirestore.collection('reports', ref => ref.limit(10));

正如所料,该应用程序最多显示10个结果。

为了确保Firestore不允许任何更大的限制,我写了以下规则:

match /reports/{reportId} {
  allow list: if request.query.limit && request.query.limit <= 10
}

出于某种原因,由于“权限丢失或不足”,应用程序无法从Firestore获取数据。

为了确保问题出在本声明中,我将以下规则更改为:

match /reports/{reportId} {
  allow list;
}

它奏效了。

然后我试着在“婴儿步骤”中写下这条规则,所以我写道:

match /reports/{reportId} {
  allow list: if request.query.limit;
}

令人惊讶的是它失败了。现在,我的问题是为什么request.query.limit是一个虚假的价值,而我在我的应用程序中明确写了.limit(10)?毕竟,当我写allow list;时,我得到10份文件而不是超出。

编辑:

看起来即使我写下面的规则,它也会失败:

match /reports/{reportId} {
  allow list: request.query;
}
google-cloud-firestore firebase-security-rules
1个回答
0
投票

给出了这个例子,docs误导了我:

// Limit documents per request to 50
allow list: if request.query.limit && request.query.limit <= 50

虽然应该只有:

allow list: if request.query.limit <= 50
© www.soinside.com 2019 - 2024. All rights reserved.