为什么firebase数据库的javascript循环函数会不断自我复制
我有一个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
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');,之后;,就像我在回答中说的那样