У меня в базе данных 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;
}