Firestore: запрос коллекции для всех документов, к которым у пользователя есть доступ - PullRequest
0 голосов
/ 29 августа 2018

В ситуации, когда мне неясно, есть чистое решение.

В Firestore у меня есть коллекция, в которой пользователю разрешен доступ только к определенным документам. Пользователи могут быть назначены на одну или несколько учетных записей, а учетные записи могут иметь одного или нескольких пользователей. Общие модели и правила работают как положено:

USER: {
  id       : abc123,
  accounts : [ xyz789, ... ]
}

ACCOUNT: {
  id      : xyz789,
  users   : [ abc123, ... ]
}

service cloud.firestore {
  match /databases/{database}/documents {
    match /accounts/{accountID} {
      allow read, write: if accountID in get(/databases/$(database)/documents/users/$(request.auth.uid)).data.accounts;
    }
  }
}

Из того, что я могу сказать с помощью имитатора правил Firebase, вышеупомянутое правило работает правильно (я могу читать / обновлять учетные записи, в которых указан мой идентификатор пользователя, но не те, которые этого не делают).

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

firestore.collection('accounts').where('users', 'array-contains', userID)

ERROR: Missing or insufficient permissions

Учитывая, что набор правил и запрос, по-видимому, ссылаются на одни и те же записи, есть ли способ заставить их работать вместе или я вынужден ослабить правила, чтобы заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...