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