我目前正在尝试将数据从 firebase 写入 csv 文件。它有点工作,但我得到三个不同的文件,我不知道如何解决这个问题。在这个时候我只是非常困惑。
你知道如何解决这个烂摊子吗?
这是我的 JSON:
{
"records" : {
"id1" : {
"2020-08-11 15:40:13" : {
"0" : "5"
},
"2020-08-11 16:35:09" : {
"0" : "18"
}
},
"id2" : {
"2020-08-11 17:23:34" : {
"0": "5"
}
},
"id3" : {
"2020-08-11 09:38:53" : {
"0": "4"
}
},
"id4" : {
"2020-08-11 13:41:30" : {
"0": "2"
},
"2020-08-11 13:41:44" : {
"0": "3"
}
}
}
}
基本上,我想获取所有 id 并将它们写入 csv 文件的一列。“测试”条目只是其他数据条目的占位符。
这是我到目前为止所拥有的:
function downloadData(){
var db = firebase.database().ref();
var dbRef = db.child('records');
dbRef.once('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var b = [childKey, 'iwannasleep'];
// console.log(childKey);
// console.log(b);
var data = [b];
console.log(data);
// ------------- export into csv ---------------
var arrayHeader = ["user_id", "test"]
var csv = arrayHeader.join(',') + '\n';
data.forEach( function(row) {
csv += row.join(',');
csv += "\n";
});
console.log(csv);
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);;
hiddenElement.target = '_blank';
hiddenElement.download = 'data.csv';
hiddenElement.click();
});
});
}
正如 RobIII 所评论的,您正在for 循环内创建一个下载链接,这意味着您正在为每一行数据创建一个单独的元素。
你会想把它从循环中拉出来:
var db = firebase.database().ref();
var dbRef = db.child('dataRecordings');
dbRef.once('value', function(snapshot) {
var arrayHeader = ["user_id", "test"]
var csv = arrayHeader.join(',') + '\n';
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var b = [childKey, 'iwannasleep'];
var data = [b];
data.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
});
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);;
hiddenElement.target = '_blank';
hiddenElement.download = 'data.csv';
hiddenElement.click();
});
更新:您的问题中 JSON 发生的情况的示例:
const json = {
"records" : {
"id1" : {
"2020-08-11 15:40:13" : { "0" : "5" },
"2020-08-11 16:35:09" : { "0" : "18" }
},
"id2" : {
"2020-08-11 17:23:34" : { "0": "5" }
},
"id3" : {
"2020-08-11 09:38:53" : { "0": "4" }
},
"id4" : {
"2020-08-11 13:41:30" : { "0": "2" },
"2020-08-11 13:41:44" : { "0": "3" }
}
}
}
var arrayHeader = ["user_id", "test"]
var csv = arrayHeader.join(',') + '\n';
Object.keys(json.records).forEach((childKey) => {
var b = [childKey, 'iwannasleep'];
var data = [b];
data.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
});
console.log(csv);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句