我有一個有趣的問題。我所做的一般想法是從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