【发布时间】:2018-11-23 17:00:46
【问题描述】:
我想使用 Firebase 回调从我的实时数据库中检索数据,将其存储在一个数组中,然后将该数据用于数据可视化。但是当我为数组记录控制台时,它返回空。我引用了this post 试图理解/修复我的错误,但我仍然遇到很多麻烦。
var genderData=[];
// Get counter values.
function getData(){
var ref = firebase.database().ref().child('counters');
return ref.once('value').then((snapshot) => {
snapshot.forEach((element) => {
genderData.push(element.val()['Male']);
});
return genderData;
});
}
console.log(genderData);
我的控制台显示:
最终,我希望能够使用我的数组通过 Chart.js 库生成图表:
// Bar graph displaying the total number of students by gender.
var ctx = document.getElementById("myChart4").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Male", "Female", "Non-Binary", "Other", "Unspecified"],
datasets: [{
data: genderData,
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)',
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
title: {
display: true,
text: 'Total Students by Gender'
},
legend:{
display: false
},
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
我已经解决这个问题几个小时了,但没有解决方案。我想要的只是用我的数据库数据创建一个简单的数组,但是我遇到了很多麻烦。我真的希望有人可以帮助我找到一个优雅的解决方案。
编辑:
一点我的数据库结构,以防万一:
【问题讨论】:
-
如果您将值推送到数组,为什么还要返回它?
标签: javascript arrays firebase asynchronous firebase-realtime-database