Javascript 处理程序上的Firebase始终处于触发状态
我正在使用以下脚本:Javascript 处理程序上的Firebase始终处于触发状态,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在使用以下脚本: var conversation = firebase.database().ref('conversations'); conversation.on('value', (snapshot) => { const data = snapshot.val(); document.getElementById('#btn').click(); }); 但是,即使数据库中没有新数据,on也始终会触发。我知道这一点,因为按钮总是被按下 有人知道我做错了什么吗 谢
var conversation = firebase.database().ref('conversations');
conversation.on('value', (snapshot) => {
const data = snapshot.val();
document.getElementById('#btn').click();
});
但是,即使数据库中没有新数据,on也始终会触发。我知道这一点,因为按钮总是被按下
有人知道我做错了什么吗
谢谢这是预期的行为。('value')侦听器上的
会立即启动,并在数据库中该路径上显示当前值的快照,如果该路径下的任何数据发生更改,则会再次启动该侦听器。Firebase会同步(您在数据库中观察到的路径)数据库的状态,它不会在更改发生时传递有关更改的消息(消息队列会这样做)
如果您只想获取新数据,您应该对“新”有一些指示意思是。关于这方面的更多信息,我建议查看前面的一些问题。问题是它一直在启动。即使没有新数据。问题不是它获取整个节点,而是它应该只在添加新数据时启动。不是吗?侦听器会立即启动,并显示一个新数据的快照但是,感谢firebase文档说:“您可以使用value事件读取给定路径中内容的静态快照,因为它们在事件发生时就存在。”另一件事,“child_added”(添加的孩子)是每次都会触发还是仅在添加孩子时才会触发?如果您认为文档不清楚,则在每页的底部都会有一个链接来留下反馈。不过,行为正如我在这里所描述的。child_added
也会立即为每个现有的孩子触发。请参阅,其中说明了关于child_added
:“此事件会为每个现有子项触发一次,然后在每次将新子项添加到指定路径时再次触发。”谢谢,Frank。正如文档中所述,它应该只在添加新子项时触发,而不是一直。。。