我正在执行mongdb数据库查询,该查询会下载一个对象数组,然后我想将其转换为CSV。我正在使用babyparse
这是节点的papaparse替代版本。
这就是我正在尝试的:
Player.find({}).
exec(function(err, players) {
console.log(players.length);
var csv = papaparse.unparse(players, {
quotes: false,
delimiter: ',',
newline: '\n'
});
response.set({'Content-Type': 'application/force-download',
'Content-disposition':'attachment; filename=players.csv'});
response.send(200, csv);
});
}
然而,这不会提供正确的CSV文件,但有些奇怪,例如将csv内容与java脚本函数内容合并。
我该怎么做?
答案 0 :(得分:1)
使用以下函数展平JSON数据
JSON.flatten = function(data) {
var result = {};
function recurse (cur, prop) {
if (Object(cur) !== cur) {
result[prop] = cur;
} else if (Array.isArray(cur)) {
for(var i=0, l=cur.length; i<l; i++)
if(cur[i].constructor === Object)
recurse(cur[i], prop + "[" + i + "]");
else
{
if(cur.length > 1)
{
result[prop] = (result[prop] || "") + cur[i] + ";";
}
else
{
result[prop] = cur;
}
}
if (l == 0)
result[prop] = [];
} else {
var isEmpty = true;
for (var p in cur) {
isEmpty = false;
recurse(cur[p], prop ? prop+"."+p : p);
}
if (isEmpty && prop)
result[prop] = {};
}
}
recurse(data, "");
return result;
}
根据您的情况修改:)