Загружает ли Firebase Realtime Database Search на узле данные из подузлов? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть два важных вопроса о базе данных Firebase Realtime (для android с java).

Соблюдайте следующую структуру:

enter image description here

У меня есть следующий класс:

public class User {
    String name;
    String age;
    String region;
    String color;
}

Для поиска данных пользователя (имя, возраст, регион и цвет) я делаю:

DatabaseReference usersRef = ConfigF.getFirebase().child("users").child("user1");
        usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                User user = dataSnapshot.getValue(User.class);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });

Вопрос 1: при выполнении этого поиска Firebase загружает только пользовательские данные (кроме узла сообщений) или также загружает данные, которые находятся в узле сообщений?

Представьте, что в миллионах сообщений узел сообщений, выполняющий этот поиск, также будут загружены миллионы сообщений? почему узел сообщений находится внутри узла пользователя?

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

Вопрос 2: Если я удалю атрибут «color» из класса User, при выполнении того же поиска выше, будет ли загружено значение «color» в базе данных ? Или только данные, которые будут в классе (имя, возраст и регион)?

1 Ответ

0 голосов
/ 12 апреля 2020

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

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