Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理程序上的Firebase始终处于触发状态_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

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。正如文档中所述,它应该只在添加新子项时触发,而不是一直。。。