Вы не можете думать о реальном времени Firebase, как вы это делаете для баз данных RDBMS / SQL.Представьте, что FireBase Realtime - это один большой JSON-объект, с помощью которого можно получить доступ к нужным данным через ключ объекта (который также является URL-адресом).Это означает, что в объекте JSON не существует такой вещи, как «соединения» (и в реальном времени firebase).Я бы посоветовал прочитать больше о лучших методах разработки вашей схемы.Да, для firebase realtime, ожидайте, что он будет иметь дублированные данные (в отличие от базы данных SQL).
tl; dr:
- Создайте схему как можно более плоской
Не храните ваши данные в виде массивов.Если вы это сделаете, firebase сохранит массив как объект, ключи которого являются индексом массива:
array = ['aha', 'hoho']
будетхранится как:
array: {
0: 'aha',
1: 'hoho'
}
Создайте свою схему так, чтобы вы могли извлекать нужные данные с минимальным количеством вызовов (да, для этого ожидайте дублированных данных):
Например:
{
users: {
user_id1: {
name: 'user 1',
phone: '123456',
email: 'testt@gmail.com'
}
},
events: {
participantst: {
user_id1: { // <= note for here I only want user's name & email thus its in this manner
name: 'user 1',
email: 'test@gmail.com'
}
}
}
}
НЕ
{
users: {
user_id1: {
name: 'user 1',
phone: '123456',
email: 'testt@gmail.com'
}
},
events: {
participantst: {
user_id1: user_id1 // <= Doing it like this means you would need to make another call to the 'users' node to fetch the user data
}
}
}
и многое другое.