Javascript Can';是否无法访问从node.js ReadStream存储的数据?

Javascript Can';是否无法访问从node.js ReadStream存储的数据?,javascript,node.js,json,stream,Javascript,Node.js,Json,Stream,我让这个node.js文件通过如下数据流读取.csv: shldata = [] fs.createReadStream('./spreadsheets/shl.csv') .pipe(csv({separator:';'})) .on('data', (row) => { shldata.push(row); }) .on('end',() => { console.log('CSV file successfully processed'); }); cons

我让这个node.js文件通过如下数据流读取.csv:

shldata = []

fs.createReadStream('./spreadsheets/shl.csv')
.pipe(csv({separator:';'}))
.on('data', (row) => {
    shldata.push(row);
})
.on('end',() => {
    console.log('CSV file successfully processed');
});

console.log(shldata);
顺便说一句,如果不是通过读取流,我找不到其他方法来实现这一点

如果我将console.log数据记录在“.on('end')”承诺中,它将提供数据。 如果我以后再做,它会给我空值

我感觉流排队,只有在记录数据变量之后才读取

我试着在承诺中加上“return shldata”,但没有用

另外,我正在尝试删除CSV中一些我不需要的列。我尝试在承诺中添加此for循环:

for (i=0; i < shldata.length; i++){
    delete shldata[i]['key1'];
    delete shldata[i]['key2'];
    (...)
}
for(i=0;i
它是有效的,但前提是我对每个列标题重复该行。如果我尝试使用这样的密钥数组,它将不起作用:

for (i=0; i < shldata.length; i++){
    delete shldata[i][keystoRemove];
}
for(i=0;i
其中在流之前设置了数组“keystemove”。 我有一种感觉,我需要以某种方式将这个数组输入到这个承诺中,否则它将无法读取它


这一切让人觉得不必要的复杂。我只是想写一个脚本来读取一些文件,稍微更改它们的数据,然后向API提交一个HTTP post。

您可以在“end”事件处理程序中完整地访问
shldata

.on('end',() => {
    console.log('CSV file successfully processed');
    // at this point you have all the data.
}
您当前的代码试图在处理所有数据和触发所有事件之前访问它。如果这是一个专用函数,
可以返回shldata

.on('end',() => {
    console.log('CSV file successfully processed');
    // at this point you have all the data.
}