Firebase Uncaught TypeError:无法读取属性' forEach'未定义的

时间:2017-09-05 14:25:59

标签: javascript firebase firebase-realtime-database

我试图计算我在数据库中制作的两条路线上的不当行为数量。以下是驱动程序和报告数据库下的firebase数据库的结构:

[drivers database] - i.stack.imgur.com/Q6GKs.png

[报告数据库] - i.stack.imgur.com/ALWPu.png

这是我计算不良行为数量的计数器:

        <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>

我收到此错误消息: 未捕获的TypeError:无法读取属性&#39; forEach&#39;未定义的 在drivers.forEach,所有输入将非常感谢!谢谢!

错误讯息:https://i.stack.imgur.com/W5iGZ.png

1 个答案:

答案 0 :(得分:0)

你可以嵌套它们,或者如果你在支持es6的Promise对象(你的代码建议)的环境中运行它,你可以使用once()返回一个promise并且更优雅地做:

Promise.all([driversRef.once('value'), reportsRef.once('value')])
  .then(([driversSnapshot, reportsSnapshot]) => {
    // ...
  })