Javascript Can';是否无法访问从node.js ReadStream存储的数据?
我让这个node.js文件通过如下数据流读取.csv: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
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.
}