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

时间:2019-03-18 17:52:03

标签: google-cloud-firestore firebase-security-rules

我的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;
}

1 个答案:

答案 0 :(得分: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