Почему мои правила Firestore мешают мне получать мои документы? - PullRequest
0 голосов
/ 06 апреля 2020

Я устанавливаю свои правила Firebase, и у меня есть один запрос, который продолжает отбрасывать меня назад Uncaught (in promise) FirebaseError: Missing or insufficient permissions.

Я посмотрел на свои правила и попытался выяснить, что я могу делать неправильно, но не могу найти, что это такое.

Это мой запрос:

  const data = await db
    .collection("templates")
    .where("user_ID", "==", userID)
    .get()

И вот мои соответствующие правила:

match /templates/{template}{
  allow read, write, delete: if request.auth.uid == request.resource.data.user_ID;
}

У меня есть только этот правила для коллекции templates, поэтому проблем с перезаписью не возникает.

Каждый документ в этой коллекции имеет поле user_ID, которое является идентификатором пользователя, который его опубликовал.

I в настоящее время имеется только один документ для тестирования.

Что я делаю не так, чтобы получить эту ошибку?

Если я изменю ее на if true, то я перестаю получать эту ошибку - поэтому я знать, что это правило является причиной проблем.

1 Ответ

1 голос
/ 06 апреля 2020

Как объяснено в do c:

Переменная resource относится к запрашиваемому документу, а resource.data - это карта всех полей и значения хранятся в документе.

Когда записывает данные, вы можете сравнить входящие данные с существующими данными. В этом случае, если ваш набор правил разрешает ожидающую запись, переменная request.resource содержит будущее состояние документа.

Таким образом, ваше правило неверно, когда вы хотите прочитать, оно должно быть:

match /templates/{template}{
  allow read: if request.auth.uid == resource.data.user_ID;
  allow write: ....
}

К вашему сведению, действительно стоит посмотреть официальное видео .

...