Чтение подмножества базы данных реального времени Firebase с ограничениями правил - PullRequest
1 голос
/ 12 марта 2019

У меня есть база данных реального времени Firebase, структурированная так:

{
  "USERS": {
    "user-1": { ... },
    "user-2": { ... }
  }
  "GROUPS": {
    "group-1": {
      "id": "group-1",
      "AUTH": {
        "user-1": true,
      }
    },
    "group-2": {
      "id": "group-2",
      "AUTH": {
        "user-2": true
      }
    },
    "group-3": {
      "id": "group-3",
      "AUTH": {
        "user-1": true,
        "user-2": true
      }
    }
  }
}

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

{ 
  "rules": {
    "GROUPS": {
      "$groupId": {
        ".write": false,
        ".read": "auth != null && data.child('AUTH').child(auth.uid).exists()"
      }
    }
  }
}

Я пытаюсь найти комбинацию запрос + правила, которая вернула бы мне все группы, к которым принадлежит зарегистрированный пользователь.

Например: Изменение правила запроса и пожарной базы, которое для вошедшего в систему пользователя '1' возвращает моментальный снимок:

{
  "group-1": {
    "id": "group-1",
    "AUTH": {
      "user-1": true,
    }
  },
  "group-3": {
    "id": "group-3",
    "AUTH": {
      "user-1": true,
      "user-2": true
    }
  }
}

OR

[
  {
    "id": "group-1",
    "AUTH": {
      "user-1": true,
    }
  },
  {
    "id": "group-3",
    "AUTH": {
      "user-1": true,
      "user-2": true
    }
  }
]

запрос ссылки "GROUPS" теперь выдает ошибку "permissions denied".

добавление '.read = true' в ГРУППЫ:

{ 
  "rules": {
    "GROUPS": {
      ".read": true,
      "$groupId": {
        ".write": false,
        ".read": "auth != null && data.child('AUTH').child(auth.uid).exists()"
      }
    }
  }
}

или любая комбинация для «.read», которая проходит условие, дает каждому доступ ко всем данным.

Есть ли способ (в текущей структуре) сделать запрос к базе данных и получить из ветви «ГРУППЫ» все группы, к которым я принадлежу, добавив некоторые ограничения к правилам? или мне нужно вести под каждым пользователем список группы, к которой он принадлежит?

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