У меня есть 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);
Кстати, я не смог бы найти другой способ сделать это, если бы не поток чтения.
Если я утешаю данные в обещании ".on ('end')", это дает мне данные. Если я сделаю это позже, это даст мне ноль.
У меня такое ощущение, что поток ставится в очередь и читает только после регистрации переменной данных.
Я попытался добавить "return shldata" в обещание безрезультатно.
Также я пытаюсь удалить некоторые из столбцов CSV, которые мне не понадобятся. Я попытался добавить это для l oop в обещании:
for (i=0; i < shldata.length; i++){
delete shldata[i]['key1'];
delete shldata[i]['key2'];
(...)
}
Это работает, но только если я повторяю эту строку для каждого заголовка столбца. Если я попытаюсь использовать массив ключей как этот, он не будет работать:
for (i=0; i < shldata.length; i++){
delete shldata[i][keystoRemove];
}
Где массив "keystoRemove" установлен перед потоком. У меня возникло ощущение, что мне нужно как-то ввести этот массив в это обещание, иначе он его не прочтет.
Все это кажется излишне сложным. Я просто пытаюсь написать скрипт для чтения нескольких файлов, изменения их данных и отправки HTTP-сообщения в API.