2013-10-30 96 views
0

接收child_added的通知我在浏览器客户端和服务器端NodeJS上都使用Firebase,以便使网站的搜索引擎友好。所以,我正在渲染服务器端的项目列表,然后在客户端收听新的更新。

我无法找到on('child_added')的适当链接,该链接将从开始收听特定ID的child_added通知开始。

With endAt()或startAt(),这些函数是endpoint inclusive,所以它们也返回最后一个孩子。

其他一些answers似乎表明使用endAt().limit(1),但这似乎有缺陷,因为可能有多个child_added之间的差距。 endAt()也是包含性的,所以endAt().limit(1)仍返回最后添加的孩子。

回答

1

你可以做一个once('value'),然后开始在once()回调.on('child_added')监听器,和比较新的儿童与那些在once()呼叫最初读的名字。

虽然这有点难看,并且需要在内存中保留一堆儿童名字。如果你更详细地描述你的用例,它可能会帮助人们想出更好的解决方案。您的网站是如何设计的,以便您只需加载未来的添加内容,并且不能丢弃查询端点?

+0

这需要将所有孩子加载到本地内存中,正如您所提到的那样进行一些关键比较。应该有一些干净的方式来做到这一点。 –

0

你可以push()自己的虚拟数据,然后startAt(null, the-name-of-the-dummy).on('child_added'),并抛出第一个结果。

+0

事实上,这是我目前的解决方案,但似乎不够干净.... –