Создание правил безопасности Firestore, который обращается к документу выше по пути - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть коллекция пожарных, которая соответствует структуре, описанной ниже


service cloud.firestore {
  match /databases/{database}/documents {
    //allow any authenticated user to read from ComicBook
    match /MainCollection/{document} {
      allow read: if request.auth != null;
      allow create:.....

      match/subcollection/{document} {
          //here i would like to use something like a get to match a field in the doc above
          allow write: if request.auth.uid == {document from above}.data.ownerID
      }
    }

Как мне добиться этого, если это возможно?

1 Ответ

2 голосов
/ 21 февраля 2020

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

match /MainCollection/{maindoc} {
  match/subcollection/{subdoc} {
    allow write: if request.auth.uid == 
      get(/databases/$(database)/documents/MainCollection/$(maindoc)).data.ownerID
  }
}

Обратите внимание, что я использовал разные подстановочные имена maindoc и subdoc, поэтому одна переменная не маскирует другую.

...