У меня возник интересный вопрос. Общая идея того, что я делаю, - это вытащить данные из базы данных 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