Как получить только частичный набор данных из запроса Firebase - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь создать базу данных пользователей в firebase.

Структура выглядит следующим образом:

users: {
    uid: {
        username: exampleName
        email: exampleEmail
        personalInfo: examplePersonalInfo
    }
}

В настоящее время я могу получить ВЕСЬ объект данных иззапрос, который я выполняю:.

Мне нужно только имя пользователя, и я хотел бы установить правила, в которых:

 personalInfo: {
    ".read" = "$uid === auth.uid"
 }

, но

 username: {
     ".read" = true
 }

это возможно, и здесь есть решениетолько запросить и получить имя пользователя?

Спасибо!

1 Ответ

0 голосов
/ 17 января 2019

Когда запрос возвращает дочерний узел, этот дочерний узел будет содержать все, что находится под ним. Вы не можете дальше фильтровать детей, чтобы вернуться. Фактически, с правилами безопасности, когда вы предоставляете доступ клиенту к определенному дочернему узлу, клиент имеет неявный доступ к всему под ним. Вы не можете отклонить доступ к дочернему узлу родительского узла, которому вы уже предоставили доступ.

Если вам нужно ограничить размер результирующего набора, выбрав только необходимые дочерние элементы, вам придется продублировать данные в структуру, которая содержит только данные, необходимые для этого конкретного запроса. Это часто встречается в базах данных типа nosql. Преимущество быстрее и меньше читает. Недостатком является больший объем памяти, и вам нужно будет синхронизировать дубликаты.

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