Правила Firestore - request.query.limit запрещает сбор списка - PullRequest
0 голосов
/ 18 марта 2019

У меня в базе данных 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 голосов
/ 18 марта 2019

Документы вводят меня в заблуждение, приведя пример:

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

Пока должно быть только:

allow list: if request.query.limit <= 50
...