Правила Firestore: Можем ли мы получить доступ к документу родителя wildcare в правилах детей? - PullRequest
0 голосов
/ 03 июля 2019

Позвольте следующие правила:

match /users/{user} {  // Do not specify any authentication for the read rule - Do not specify any delete rule
  allow create: if request.auth.uid != null && resource.data.login == "Anonymous" && resource.data.avatar_is_defined == false && resource.data.show_in_amounts_ranking == false && resource.data.amount == 0.0 && resource.data.deleted == false;
  allow update: if request.auth.uid != null && request.auth.uid == user && resource.data.deleted != true;
  allow read: if resource.data.deleted != true;

  match /seals/{seal} {  // Do not specify any delete rule
    allow create: if request.auth.uid != null && request.auth.uid == user && get(/databases/$(database)/documents/users/$(user)).data.deleted != true && resource.data.title != "";
    allow update: if request.auth.uid != null && request.auth.uid == user && get(/databases/$(database)/documents/users/$(user)).data.deleted != true && ((resource.data.title != "" && request.resource.data.amount > resource.data.amount) || (resource.data.title == "" && request.resource.data.amount == resource.data.amount));
    allow read: if get(/databases/$(database)/documents/users/$(user)).data.deleted != true;

Правильно ли использовать $(user) в read правиле match /seals/{seal}, даже если подстановочный знак {user} определен вродитель match /users/{user}?

1 Ответ

1 голос
/ 03 июля 2019

Да, вы можете использовать подстановочные знаки из любого внешнего совпадения, находящегося в области действия, вплоть до самого верхнего service диапазона. Он работает так же, как и следовало ожидать с большинством языков программирования, которые имеют вложенную область видимости переменных. Обратите внимание, что $ (database) также отлично работает, что соответствует на более высоком уровне.

...