Firebase'价值'然后' child_changed'事件优化

时间:2017-04-18 03:44:34

标签: javascript firebase firebase-realtime-database

当我的SPA启动时,我想要一个单一的事件,它给我一个表示列表的数据库中的路径状态。类似的东西:

let users;
const handler = (snap) => {};

firebase.ref('/foo').once('value')
  .then(snap => users = snap)
  .then(firebase.ref('/foo').on('child_changed', handler))

目标是我作为单个网络事件的一部分立即检索所有用户。然后,我会关注任何新的儿童记录,只有当他们进来时才会得到新的孩子(而不是整个列表)。

1 个答案:

答案 0 :(得分:1)

使用“child_added”事件。获取新用户。

更新: 要获取旧消息,请首先使用“值”事件。在回调函数寄存器中监听“child_added”并取消“值”。我们没有使用'一次',因为当聊天是新的并且没有消息'一次'将不会被触发。为了只获取新消息,使用 orderByChild 方法对它们进行排序,但是您需要某种类型的子项,如消息的时间戳,然后使用上一个消息的时间戳来自您从“值”获得的上一个数组。 startAt (lastMessage.timestamp)应该有帮助