Доступ к первым символам идентификатора документа в правилах - PullRequest
0 голосов
/ 25 июня 2018

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

Пока игнорируя префиксы, я пыталсясравните полный идентификатор документа, используя resource.id , но в клиентском приложении отказано в разрешении.Разрешение предоставляется только при сравнении request.auth.uid, поэтому это не проблема на стороне клиента.

service cloud.firestore {
  match /databases/{database}/documents {
     match /collectionA/{x} {
        allow read: if request.auth.uid == 'ABCD1234' && resource.id == '00153@1529943514.26';
    }
  }
}

1 Ответ

0 голосов
/ 25 июня 2018

Для вашего правила x - это строка идентификатора документа, так что вы можете сравнить ее с этим вместо resource.id (возможно, еще не определено, что пользователь имеет доступ к какому-либо свойству ресурса).

У вас есть несколько способов проверить содержимое String (обязательно прочитайте эту ссылку).

Вы можете извлечь подстроку, используя синтаксический индекс:

x[0:2] == 'abc'  // the first three characters of the string x

Вы также можете использовать match () , чтобы применить регулярное выражение для проверки начала строки:

x.matches('^prefix.*') == true
...