我必须从firebase(大约3000个孩子和大约1.5 MB)中读取大量数据,如果我可以显示下载到用户的内容,那将是很好的。所以我决定使用child_added
来展示它们中的每一个,但它并不像我期望的那样有效。
经过一些实验,我发现在第一个孩子加入时需要约5秒钟,几秒钟就会结束(约3秒钟)。如果我使用value
事件,它也需要约5秒钟才能完成。
所以我的问题是firebase child_added如何真正起作用?它只是加载它们并在每一个上触发一个事件,还是我错过了什么?
更新
这是我的数据库结构。
- 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())
})
答案 0 :(得分:1)
on(' child_added')在加载所有数据时没有完成概念。 总是等待新孩子出现之前没有看到过,直到你关闭它为止。可以随时触发回调。除了等待更多项目出现在服务器上之外,它还可能首先从本地缓存加载项目(如果有的话)。
如果您需要一个所有的特定节点的单个快照,只需一次,并且您不希望收到有关未来任何更改的通知,只需使用{{3} }。
让once('value')熟悉on()和once()之间的区别以及不同类型的事件是个好主意。