Как посчитать / рассчитать ограничение доступа к правилу безопасности Firestore для get (), вложенного get ()? - PullRequest
0 голосов
/ 28 июня 2018

Существует ограничение 10 get () для запросов с одним документом и запросов. Сколько вызовов будет иметь приведенный ниже фрагмент для роли доступа «СТАНДАРТ»?

function isOwnerOfTeam(teamId, userId) {
  return get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId] == 'OWNER'
}

function isAdminOfTeam(teamId, userId) {
  return get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId] == 'ADMIN'
}

function isStandardOfTeam(teamId, userId) {
  return get(/databases/$(database)/documents/team_access_privilege/$(teamId)).data[userId] == 'STANDARD'
}

function isTeamMember(teamId, userId) {
  return isOwnerOfTeam(teamId, userId) || isAdminOfTeam(teamId, userId) || isStandardOfTeam(teamId, userId)
}

А что, если у меня есть get (), вложенный в get () с операторами OR. Сколько будет звонков доступа?

Например

function getTeamId(teamName) {
  get(/databases/$(database)/documents/team/$(teamName)).data[id]
}

match /teamSecretStory/{teamName} {
      allow read: if isTeamMember(getTeamId(teamName), request.auth.uid);
}

В общем, сколько доступа это вложенное get () get () с операторами OR для роли 'STANDARD'?

1 Ответ

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

Правила безопасности, как и все основные языки программирования, замыкают свои логические ИЛИ слева направо. Каждое ИЛИ оценивается слева направо, пока один из них не оценивает значение «истина» или все они не оценивают значение «истина». То же самое для логического И, за исключением того, что первая ложная оценка остановит всю цепь.

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