Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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
为什么firebase数据库的javascript循环函数会不断自我复制_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

为什么firebase数据库的javascript循环函数会不断自我复制

为什么firebase数据库的javascript循环函数会不断自我复制,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有一个Javascript循环函数 firebase.auth().onAuthStateChanged((user) => { if (user) { database = firebase.database(); var BusinessesId = firebase.auth().currentUser.uid; var ref = database.ref('/Jobs/'); ref.on('value', Applica

我有一个Javascript循环函数

 firebase.auth().onAuthStateChanged((user) => {
  if (user) {
        database = firebase.database();

      var BusinessesId = firebase.auth().currentUser.uid;
      var ref = database.ref('/Jobs/');
    ref.on('value', ApplicationData,  errData);

  }
  })

         function JobData(data) { 

              var container = document.getElementById('Jobs'); 

              data.forEach(function(JobSnap) { // loop over all jobs
                var key = JobSnap.key;
                var Jobs = JobSnap.val();
                var newCard = `
                       <div class="thumbnail" id="${key}">
                           <span class="folder"><span class="file"></span></span>
                           <div class="title" id="Jobs">${Jobs.JobTitle}</div>
                        </div>
                    `;
              container.innerHTML += newCard;
              console.log(key);
              })
            }
firebase.auth().onAuthStateChanged((用户)=>{
如果(用户){
database=firebase.database();
var BusinessesId=firebase.auth().currentUser.uid;
var ref=database.ref('/Jobs/');
参考('value',ApplicationData,errData);
}
})
函数JobData(数据){
var container=document.getElementById('Jobs');
data.forEach(函数(JobSnap){//在所有作业上循环
var key=JobSnap.key;
var Jobs=JobSnap.val();
var新卡=`
${Jobs.JobTitle}
`;
container.innerHTML+=newCard;
控制台日志(键);
})
}
这显示了这一点


我注意到,每当我打开页面几个小时,文件夹就会成倍增加。就像一切都被复制了一样。我让它打开的时间越长,检索到的数据自身重复的次数就越多。例如,如果我打开网页,在回来时离开了大约一个小时左右,他们会看到下面显示的每个文件夹的两个副本。是什么导致了这种情况,我如何停止它?

您正在调用此事件的函数,所以我猜,状态再次更改,调用再次进行

firebase.auth().onAuthStateChanged()
然后将缩略图附加到容器中

container.innerHTML += newCard;
您可以像这样重置内容

var container = document.getElementById('Jobs'); 
container.innerHTML = '';

或者查看event.onAuthStateChanged()再次被激发的原因。

您建议我将container.innerHTML=''放在哪里;就在var container=document.getElementById('Jobs');,之后;,就像我在回答中说的那样