处理异步流:在 nodejs 中过滤日期后读取和写入多个 csv 文件

问题描述

所以我有一堆 csv 文件,这些文件的数据比我需要的要多,我想通过只保留 2015 年之后日期的行来过滤数据。问题是它适用于单个文件,但是当我输入多个文件,它在所有流中写入相同的数据。所以有人可以帮我...

这是我的代码:

const fastcsv = require('fast-csv');

const csv = require('csv-parser');
const fs = require('fs');

const dateList = new Date('2015-01-01')


let files = fs.readdirSync("dir");

for(let file of files){
    var list = []
    
    
    console.log('<inputPath>'+file);
    fs.createReadStream('<inputPath>'+file)
        .pipe(csv())
        .on('data',(row) => {

            //filtering data here
            var dateRow = new Date(row.Date);
            if(dateRow >= dateList)  list.push(row);

        })
        .on('end',() => {

            //my writestream,I dont know if I should make some function or do it here itself

            const ws = fs.createWriteStream('<outputPath>' + file)
                .then(()=>{
                    console.log(`CSV file successfully processed : ${file}`);
                    fastcsv
                        .write(list,{ headers: true })
                        .pipe(ws);
                })

    });
}

我知道我应该使用一些 setTimeout 或一些回调函数,但我不知道具体在哪里

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)