【发布时间】:2021-04-06 01:38:17
【问题描述】:
我对 NodeJS 和 promises 非常陌生,在 google 搜索找到下面的代码并将其变为使用 fast-csv 读取 CSV 文件的 promise 之后,基于 packNr 创建一个数据数组。下面的代码按预期拆分文件,但我的问题是将数组写回新的 CSV 文件。不知何故,我需要在下一个开始之前完成每个 packNr 的编写。使用下面的代码,我只在代码完成之前获取每个文件的标题。
var readCSV = function(path, options) { const datas = {}; // data['123'] = CSV data filtered for id = 123 return new Promise(function(resolve, reject) { fastCsv .parseFile(path, options) .on('data', d => { if (!datas[d.packNr]) datas[d.packNr] = []; datas[d.packNr].push(d) }) .on('end', () => { Object.keys(data).forEach(packNr => { // For each ID, write a new CSV file fastCsv .write(datas[packNr],options) .pipe(fs.createWriteStream(`.\data-id-${packNr}.csv`)) }) resolve(); }) })
【问题讨论】:
标签: javascript node.js csv