javascript - 有没有办法在 node.js 中同步读取 CSV?
问题描述
我正在使用csv-parser
lib 解析 node.js 中的 CSV。但我需要解析的数据在整个项目中都可用,而不仅仅是在“fs”部分。我知道有一个fs.readFileSync
选项,但它没有用,因为 CSV 是二进制文件(至少在 node.js 解释中)。我该怎么办?
const csv = require("csv-parser");
const fs = require("fs");
const cities = [];
let content = fs.createReadStream('data.csv')
.pipe(csv())
.on('data', (row) => {
cities.push(row);
});
var city_data = {
createArrayId: function(){
console.log(cities);
return cities;
}
}
module.exports = city_data;
如您所见,我需要导出“城市”数组。现在它返回空值(初始化值)。
解决方案
csv-parser
似乎总是异步的,所以你在那里不走运。
如果data.csv
不经常更改,我建议将其解析为 JSON 一次,然后require
直接解析为 JSON。
否则,您可以自己实现同步 CSV 解析,或者重构代码以等到异步解析完成后再继续处理该数据。