我有一个有趣的问题。我所做的一般想法是从Firebase数据库提取数据,并根据该数据填充表格。一切都在最初的人口中完美运行 - 单元格和行都按照它们应该存在的方式填充,但奇怪的问题是脚本似乎会随机执行。我已将输入数据记录到控制台,并且可以在一段时间后看到它打印两次。Java/Firebase脚本执行多次
如果我的网页间导航,或重新载入页面这第二次执行不会发生 - 无论是在这些案件中一切正常,因为它应该。当我锁定后重新登录到计算机时发生SEEMS问题?有没有人有任何想法可以在这里发生什么?下面的脚本的相关部分:
const table = document.getElementById('myTable');
firebase.auth().onAuthStateChanged(firebaseUser => {
if (firebaseUser) {
let user = firebase.auth().currentUser;
let uid = user.uid;
const dbRef = firebase.database().ref().child("data/" + uid);
dbRef.once('value', snap => {
var dataCount = snap.child("secondData").numChildren();
var datalist = snap.child("secondData").val();
var dataArray = Object.keys(datalist).map(function(k) {
return datalist[k]
});
pullAllInfo(dataCount, dataArray);
});
}
});
function pullAllInfo(count, array) {
let k = 0;
let dataArray = [];
for (i = 0; i < count; i++) {
let specificRef = firebase.database().ref().child("secondData/" + array[i]);
specificRef.once('value', snap => {
var optionsTag = array[k];
k++;
var dataId = snap.child("id").val();
var dataName = snap.child("name").val();
var dataCount = snap.child("data").numChildren();
dataArray.push(dataId, dataName, dataCount, optionsTag);
if (k == count) {
buildTable(dataArray);
console.log(dataArray);
}
});
}
}
正如你可以从代码中看到上面我打电话.once()
每个参考,这将防止从典型.on()
呼叫数据复制。只是似乎无法找出这一个。此外,我还有一台iMac,仅供任何人对我的潜在电脑解锁诊断感到好奇。
谢谢大家!
好的,我会尝试一下,在我目前的潜在解决方案成功或失败后(我会出于好奇) – Ethan