Firebase Firestore Query с использованием response-redux-firebase - PullRequest
0 голосов
/ 18 ноября 2018
service cloud.firestore {
  match /databases/{database}/documents {
    match/projects/{project} {
      allow read: if 
       get(/databases/$(database)/documents/projects/$(project)).data.uid == 
       request.auth.uid;
      allow create: if request.auth.uid == request.resource.data.uid;
      allow update, delete: if request.auth.uid == resource.data.uid;
    }
  }
}

здесь я делаю запросы:

firestoreConnect((props) => { 
  return ([{ collection: 'projects', where: [["uid", "==", props.auth.uid]] }]) 
})

Но я получаю ошибку:

Ошибка с прослушивателем профиля: отсутствуют или недостаточно разрешений. Ошибка: отсутствует или недостаточно разрешений. в новом FirestoreError (index.cjs.js: 402).

когда я проверяю с помощью симулятора, вводя идентификатор документа в пути, я получаю доступ для чтения. Я не понимаю, где я не прав. Возможно в запросах.

Когда я изменяю правила на:

allow read : if resource.data.uid == request.auth.uid;

ошибки нет, и отображаются данные.

Почему это происходит, это ошибка или я делаю что-то не так? Я знаю, что правила firebase не являются фильтрами.

1 Ответ

0 голосов
/ 18 ноября 2018

Вы читаете документы отдельно (и без необходимости), и я не думаю, что механизм правил способен оценить и проверить, что запрос никогда не вернет запрещенные документы с этим условием.

Попробуйте это:

allow read: if resource.data.uid == request.auth.uid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...