我试图计算我在数据库中制作的两条路线上的不当行为数量。以下是驱动程序和报告数据库下的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,所有输入将非常感谢!谢谢!
答案 0 :(得分:0)
你可以嵌套它们,或者如果你在支持es6的Promise对象(你的代码建议)的环境中运行它,你可以使用once()
返回一个promise并且更优雅地做:
Promise.all([driversRef.once('value'), reportsRef.once('value')])
.then(([driversSnapshot, reportsSnapshot]) => {
// ...
})