私は自分のデータベースで行った2つのルート上の不正行為の数を数えようとしています。以下は、それぞれのドライバとレポートデータベースの下で私のfirebaseデータベースの構造です:Firebase Uncaught TypeError:未定義の 'forEach'プロパティを読み取ることができません
[ドライバデータベース] - i.stack.imgur.com/Q6GKs.png
[レポートデータベース] - i.stack.imgur。 COM/ALWPu.png
ここで不正行為の回数カウントするための私のカウンターです: キャッチされない例外TypeError:未定義のプロパティ「のforEach」を読み取ることができません
<script>
var route1Count = 0;
var route2Count = 0;
var drivers;
var reports;
var driversRef = firebase.database().ref('drivers/');
var reportsRef = firebase.database().ref('reports/');
driversRef.once('value', (snapshot) => {
drivers = snapshot;
});
reportsRef.once('value', (snapshot) => {
reports = snapshot;
});
drivers.forEach((driver) => {
var violationCount = reports.filter((report) => report.val().plateNumber === driver.key).length;
if(driver.val().route === "Fairview - Quiapo"){
route1Count += violationCount;
}else if(driver.val().route === "Quiapo - Fairview"){
route2Count += violationCount;
}
});
document.getElementById("demo").innerHTML = "route1: " + route1Count + "route2: " + route2Count;
</script>
は、私は、このエラーメッセージが表示されますが、 drivers.forEachでを入力すると、すべての入力が非常に高く評価されます!ありがとう!
エラーメッセージ場所:https://i.stack.imgur.com/W5iGZ.png
'driversRef.once'は*非同期*実行される - それは' drivers'が 'undefined'である(と私はそれはあなたが'ドライバを呼び出している時間で実行されていない99%確信して終了するまで:ありません。 forEach') – UnholySheep
ありがとう、私はそれを修正することができる方法はありますか? –