为什么我的CSV没有任何数据而被写入?

时间:2016-09-23 07:00:44

标签: javascript json node.js csv

我正在编写一个函数,它接收我在T恤网站上执行的网页搜索结果。

每个T恤都作为对象存储,包含标题,价格,imgUrl,URL和时间。这些对象中的每一个都存储在一个数组中,包含所有的T恤。

在这个函数中,我首先将数组转换为JSON字符串。我控制台记录这个,只是为了检查这是否正确完成。

然后我创建了一个名为data的文件夹。

我列出了我想要的CSV字段。

然后我通过传入我的数据(JSON字符串),文件路径并将其设置为覆盖来编写文件。

现在,当我调用该函数时,它会完成它所需要的所有操作,除非我打开CSV文件时,列标题正确,但表格完全为空。

有什么想法吗?我非常感谢您的意见,谢谢!

代码如下:

var json2csv = require('json2csv');
var fs = require('fs');

function convertJson2Csv(){

//The scraper should generate a folder called `data` if it doesn’t exist.
var dir ='./data';

if(!fs.existsSync(dir)){
    fs.mkdirSync(dir);
};

var tshirtArray = [ { 
    Title: 'Mike the Frog Shirt, Orange',
    Price: '$25',
    ImageURL: 'img/shirts/shirt-108.jpg',
    URL: 'http://shirts4mike.com/shirt.php?id=105',
    Date: 'September 23rd 2016, 12:28:49 am' 
},{ 
    Title: 'Logo Shirt, Teal',
    Price: '$20',
    ImageURL: 'img/shirts/shirt-107.jpg',
    URL: 'http://shirts4mike.com/shirt.php?id=105',
    Date: 'September 23rd 2016, 12:28:49 am' 
},{ 
    Title: 'Logo Shirt, Gray',
    Price: '$20',
    ImageURL: 'img/shirts/shirt-106.jpg',
    URL: 'http://shirts4mike.com/shirt.php?id=105',
    Date: 'September 23rd 2016, 12:28:49 am' 
},{ 
    Title: 'Mike the Frog Shirt, Yellow',
    Price: '$25',
    ImageURL: 'img/shirts/shirt-105.jpg',
    URL: 'http://shirts4mike.com/shirt.php?id=105',
    Date: 'September 23rd 2016, 12:28:50 am' 
}];

var tshirtJson = JSON.stringify(tshirtArray);

var fields = ['Title', 'Price', 'ImageURL', 'URL', 'Date'];

var csv = json2csv({ data: tshirtJson, fields: fields });

console.log(csv);

fs.writeFile('./data/file.csv', csv, {overwrite: true}, function(err) {
    if (err) throw err;
    console.log('file saved');
});
 };

convertJson2Csv();

2 个答案:

答案 0 :(得分:1)

您的数据对象具有小写键。您的fields数组没有。

var fields = ['Title', 'Price', 'ImageURl', 'URL', 'Date'];

JavaScript区分大小写。字段名称必须与对象键匹配。

答案 1 :(得分:1)

可能无法将字段与对象属性匹配。 我在tshirtArray对象上看到你有一个' img'财产和字段是' imageURl'。

尝试将对象更改为:

var tshirtArray = [ { 'Price': '$20',
'ImageURl': 'img/shirts/shirt-107.jpg',
'Title': 'Logo Shirt, Teal',
'URL': 'http://shirts4mike.com/shirt.php?id=105',
'Date': 'September 22nd 2016, 11:17:48 pm' },
 ...
];

你也可以通过传递字段名来使标题变得漂亮:

https://github.com/zemirco/json2csv#example-4