Я пытаюсь сделать очень простую вещь, которая сопоставляет request.auth.uid
со значением поля в моих транзакциях документов (например, resource.data.useruid
) в правиле безопасности Firebase, чтобы получать транзакции определенного зарегистрированного в пользователя. Однако я не получаю никаких документов при запросе к ним и вместо этого получаю сообщение об ошибке.
Так выглядит коллекция - там только один документ с полем useruid
.
![enter image description here](https://i.stack.imgur.com/8MKNT.png)
Значение поля сопоставляется с пользователями uid (снимок экрана, сделанный на вкладке Аутентификация -> Пользователи .
![enter image description here](https://i.stack.imgur.com/Ux4Ro.png)
И правило выглядит так
![enter image description here](https://i.stack.imgur.com/T8X4E.png)
Я должен получить один документ обратно, но каждый раз, когда я запрашиваю документы, когда этот пользователь вошел в систему (я использую angularfire2 для этих целей), я получаю Error: Missing or insufficient permissions.
Если я изменяю условие правила, чтобы оно всегда возвращало true
, или если я проверяю только на достоверность request.auth.uid
, я получаю результат запроса в порядке. Забавно то, что с участием resource.data
- например. проверка значения поля amount
в правиле firebase - условие никогда не выполняется. Я пытался написать это как
allow read, write: if resource.data.amount == 3
и снова получил ошибку. Похоже, я вообще не получаю карту resource.data
.
Я чувствую, что упускаю что-то очевидное, хотя после прочтения руководств мне кажется, что все в порядке, и у меня уже нет идей. Возможности отладки (или их отсутствие) делают весь процесс очень медленным.
Не могли бы вы объяснить мне, почему я не получаю карту resource.data
в правиле безопасности firebase, или укажите, где может быть проблема?