Запросы не будут выполнены, если запрос может содержать любой документ, который не имеет разрешений.
https://firebase.google.com/docs/firestore/security/rules-query
Следующее правило безопасности использует переменные request.auth и resource.data, чтобы ограничить права на чтение и запись для каждой статьи для ее автора:
service cloud.firestore {
match /databases/{database}/documents {
match /stories/{storyid} {
// Only the authenticated user who authored the document can read or write
allow read, write: if request.auth.uid == resource.data.author;
}
}
}
Предположим, что ваше приложение содержит страницу, которая показывает пользователю список документов-историй, которые они создали. Вы можете ожидать, что вы можете использовать следующий запрос, чтобы заполнить эту страницу. Однако этот запрос не будет выполнен, поскольку он не включает те же ограничения, что и ваши правила безопасности:
Неверно: ограничения запросов не соответствуют ограничениям правил безопасности
// Этот запрос не будет выполнен
db.collection("stories").get()
Запрос не выполняется, даже если текущий пользователь фактически является автором каждого исторического документа. Причина такого поведения заключается в том, что, когда Cloud Firestore применяет ваши правила безопасности, он оценивает запрос по его потенциальному набору результатов, а не по фактическим свойствам документов в вашей базе данных. Если запрос может содержать документы, нарушающие ваши правила безопасности, запрос завершится неудачей.