作者:520那孩HAPPY | 来源:互联网 | 2023-05-21 11:23
我注意到一些我不理解的东西.我的代码中有以下"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> Mohammed Saf..:
我在"值"事件中遇到了与firebase相同的问题.这是因为多个侦听器附加于同一事件,页面加载或重新认证等.
解决方案是在附加新侦听器之前删除现有侦听器.
在off()
事件之前的firebase调用事件on()
中修复此问题.
在这种情况下,
fb.child('Question').off();
fb.child('Question').on('value',function(ss){ console.log('on called'); });
将解决这个问题