興味深い問題があります。私がやっていることの一般的な考え方は、Firebaseデータベースからデータを取り込み、そのデータに基づいてテーブルを作成することです。最初の人口ではすべてが完璧に実行されます。セルと行は必要に応じて作成されますが、スクリプトはランダムに再実行されるように見えます。私は着信データをコンソールに記録しており、ある程度の時間が経過すると2回印刷されることがわかります。Java/Firebaseスクリプトを複数回実行する
この2回目の実行は、ページ間を移動したり、ページをリロードしたりする場合には発生しません。どちらの場合でも、すべてが正常に動作します。問題は、ロックした後に私のコンピュータに戻ってログオンすると起こるのですか?誰もが何が起こっている可能性があるか考えていますか?以下のスクリプトの関連部分:
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);
}
});
}
}
私は典型的な.on()
コールからのデータの重複を防ぐことになる、各参照用.once()
を呼ぶAM上記のコードから見ることができるように。ちょうどこのことを理解しているようです。また、私は潜在的なコンピュータロック解除の診断について興味がある人のためだけにiMacを持っています。
ありがとうございます!
私の現在の潜在的な解決策が成功または失敗した直後に、私はこれを試してみます(私は好奇心から外れます) – Ethan