Я получаю «Отсутствует или недостаточно разрешений», когда у меня есть правило безопасности, которое проверяет подполе. Например:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /entries/{id} {
allow read: if resource.data.business.id == "hh7AvLpTbFGRmCGodLV4";
}
}
}
Единственный документ, который у меня есть в коллекции entries
:
{
"batchId": "bnzVkufp9mM6yGokUYug",
"business": {
"id": "hh7AvLpTbFGRmCGodLV4"
}
}
Мой запрос:
firestore()
.collection('entries')
.where('batchId', '==', 'bnzVkufp9mM6yGokUYug')
Если я изменил правило безопасности до allow read: if resource.data.batchId == "bnzVkufp9mM6yGokUYug"
, работает нормально. Есть что-то, что я пропустил?
Примечание:
- Правило отлично работает при тестировании с использованием "Правила игровой площадки" в консоли Firebase, но не получилось в работе.
- У меня есть другой проект, который отлично работает с правилами, которые проверяют подполе. Однако для двух новых проектов Firebase, которые я создал, это не работает.
- Я обнаружил связанную проблему с 2017 года ( Правила безопасности Firestore, вложенное поле ). Может ли это быть той же самой проблемой, которая появляется снова?