Мне сложно проверить этот ответ вслепую (поэтому возьмите его с крошкой соли), но я надеюсь, что это поможет вам направленно.
Так что «загрузка» в вашем случае означает способность читать db.ref ('/ Games') не должна быть доступна, но пользователь (или определенная группа пользователей?) должен иметь возможность читать db.ref ('Games / $ gameId').
Согласно этой статье: https://firebase.google.com/docs/database/security/securing-data#rules_are_not_filters
Вы не можете достичь этого с правилами безопасности, ограничивающими ".read": false на уровне "/ Games", потому что это предотвратит чтение для любого из идентификаторов игры, поскольку правило безопасности будет каскадным.
вы можете попробовать использовать запросы в качестве способа «фильтрации», как описано в статье:
"Games":{
".read":"query.orderByChild == 'email' ",
"$gid":{
".read": "query.orderBy("email") && query.equalTo === $gid",
".write":true
},
".write":false,
}
Итак, ваша БД запрос должен выглядеть примерно так:
gamesRef = database.ref('Games').orderByChild('gameId').equalTo(20204315123456)
Выше предполагается, что gameId также является свойством каждого элемента $ gameId в списке игр. Приведенный выше запрос проверит список игр для детей, чье свойство «gameId» и оно равно значению, предоставленному клиентом (так же, как ключ).
Надеюсь, что это поможет вам.