我在我的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;
}
给出了这个例子,docs误导了我:
// Limit documents per request to 50
allow list: if request.query.limit && request.query.limit <= 50
虽然应该只有:
allow list: if request.query.limit <= 50