Firebase .on(' value,function(){})一次执行两次

时间:2015-02-19 20:46:08

标签: javascript firebase

我注意到一些我不理解的东西。我有以下" on"我的代码中的查询设置。当我推动'一个孩子到了较低的水平,在我看来," on"回调函数被提升两次。

fb.child('Question').on('value',function(ss){ console.log('on called'); });

示例结构:

  

问题

     
    

---->答案

         
      

----> {答案1}:{答案对象}
      ----> {答案2}:{答案对象}

    
  

我正在添加"答案"通过"推送"功能所以"键"答案是唯一创建的firebase"唯一ID"。

fb.child('Question/Answers').push({the answer object});

此时我只推送新的"答案",没有更新或设置。我所看到的是,当我推送一个新的"回答对象"时," on"函数被调用两次。

我已经仔细检查了,而且我没有" on"事件处理程序不止一次附加。我还检查确定"推"只被召唤一次。

这是正确的行为吗?我猜测"猜测"推动是"插入"孩子然后然后设置答案对象,这会导致开启两次?但这对我来说听起来不对吗?

显然,我对Firebase来说相当新,所以不确定这是否是设计的。但令我感到紧张的是,我正在运行" on"每次更新时代码不止一次?

1 个答案:

答案 0 :(得分:7)

我在'value'事件中遇到与firebase相同的问题。这是因为为同一事件,页面加载或重新认证等附加了多个侦听器。

解决方案是在附加新侦听器之前删除现有侦听器。

off()事件之前的firebase中调用on()事件来解决此问题。

在这种情况下,

fb.child('Question').off();
fb.child('Question').on('value',function(ss){ console.log('on called'); });

将解决问题