如何从 Firebase 构建和获取时间序列数据
How to structure and fetch time-series data from Firebase
我在 Firebase 中有一个格式如下的实时数据库:
我正在使用 javascript 获取数据并将其绘制在我的网络浏览器上。问题是我无法从中获取任何数据。发现一些代码,它们通常在其中获得一个值,而不是基于时间序列的数据。我正在使用的当前获取过程是:
firebase.database().ref('edge-data').limitToLast(40).on('value', ts_measures => {
let timestamps = [];
let values = [];
ts_measures.forEach(ts_measure => {
console.log(ts_measure.val().timestamp, ts_measure.val().value);
timestamps.push(moment(ts_measure.val().timestamp).format('YYYY-MM-DD HH:mm:ss'));
values.push(ts_measure.val().value);
});
myPlotDiv = document.getElementById('myPlot');
const data = [{
x: timestamps,
y: values
}];
我的情节打开但仍然是空的,尽管它似乎可以识别日期间隔。
我不确定我的实时数据库现在的结构是否是最好的选择,但在此过程中的任何帮助都将非常有价值。
谢谢!
我的 .js 文件中的这个更改解决了所有问题:
ts_measures.forEach(ts_measure => {
console.log(ts_measure.val());
timestamps.push(moment(ts_measure.val().timestamp).format('YYYY-MM-DD HH:mm:ss'));
values.push(ts_measure.val().temperatura);
});
我在 Firebase 中有一个格式如下的实时数据库:
我正在使用 javascript 获取数据并将其绘制在我的网络浏览器上。问题是我无法从中获取任何数据。发现一些代码,它们通常在其中获得一个值,而不是基于时间序列的数据。我正在使用的当前获取过程是:
firebase.database().ref('edge-data').limitToLast(40).on('value', ts_measures => {
let timestamps = [];
let values = [];
ts_measures.forEach(ts_measure => {
console.log(ts_measure.val().timestamp, ts_measure.val().value);
timestamps.push(moment(ts_measure.val().timestamp).format('YYYY-MM-DD HH:mm:ss'));
values.push(ts_measure.val().value);
});
myPlotDiv = document.getElementById('myPlot');
const data = [{
x: timestamps,
y: values
}];
我的情节打开但仍然是空的,尽管它似乎可以识别日期间隔。 我不确定我的实时数据库现在的结构是否是最好的选择,但在此过程中的任何帮助都将非常有价值。
谢谢!
我的 .js 文件中的这个更改解决了所有问题:
ts_measures.forEach(ts_measure => {
console.log(ts_measure.val());
timestamps.push(moment(ts_measure.val().timestamp).format('YYYY-MM-DD HH:mm:ss'));
values.push(ts_measure.val().temperatura);
});