firebase child_added如何真正起作用?

时间:2017-02-05 05:57:32

标签: javascript firebase firebase-realtime-database

我必须从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())
})

1 个答案:

答案 0 :(得分:1)

on(' child_added')在加载所有数据时没有完成概念。 总是等待新孩子出现之前没有看到过,直到你关闭它为止。可以随时触发回调。除了等待更多项目出现在服务器上之外,它还可能首先从本地缓存加载项目(如果有的话)。

如果您需要一个所有的特定节点的单个快照,只需一次,并且您不希望收到有关未来任何更改的通知,只需使用{{3} }。

once('value')熟悉on()和once()之间的区别以及不同类型的事件是个好主意。