Мне нужно прочитать много данных из firebase (~ 3000 детей и ~ 1,5 МБ), и будет хорошо, если я смогу показать что-то, что загружено пользователем. Поэтому я решил использовать child_added
, чтобы показать каждый из них, но он не работает, как я ожидаю.Как работает firebase child_added?
После некоторых экспериментов я обнаружил, что на первого ребенка добавлено ~ 5 секунд, а несколько секунд - до конца (~ 3 секунды). если я использую событие value
, потребуется около 5 секунд, чтобы получить их все.
Так что мой вопрос в том, как работает firebase child_added? Он просто загружает их все и запускает событие на каждом из них или мне что-то не хватает?
Update
Это моя структура базы данных.
- contacts
- nw7VoNBw0iLUkb
- city
- company
- email
- name
- gender
- BEu8Yd7ihgxbaF
...
и некоторые из моего кода
console.log('start', Date.now())
firebase.database().ref('/contacts').on('child_added', snapshot => {
console.log('add', Date.now())
})
и
console.log('start', Date.now())
firebase.database().ref('/contacts').on('value').then(snapshot => {
console.log('end', Date.now())
})
Доступ к каждому узлу требует времени. Загружая ваши данные ребенком по ребенку, это займет значительное количество времени больше, чем загрузка их всех – ThunderStruct
Я согласен, но как насчет первой загрузки? Я думаю, что это должно быть быстрее, чем загрузить все из них, не так ли? –
Ну, это больше о глубине узла. Если ваш первый полученный ребенок более глубоко вложен, тогда потребуется больше времени. Я предлагаю вам добавить структуру базы данных к вашему вопросу. Люди могут помочь вам так :-) – ThunderStruct