createReadStream — анализ нескольких csv — файлов, не запускается конечное событие-не удается перейти к следующему файлу

#csv #parsing #stream #fs #csv-parser

Вопрос:

Я хочу проанализировать несколько csv-файлов в цикле for.

Я называю синтаксический анализ файлов как таковой:

 const rd = process.env.PWD;   const getfilePath = (i) =gt;  `${rd}/data_PART_${i}.csv`;   for (let i = 1; i lt; 43; i  ) {  const filePath = getfilePath(i);  console.log("start ", filePath);  await extractData(filePath);  console.log("finished ", filePath);  }  

с моей функцией extractData было следующее:

 export const extractData = async (filePath: string): void =gt; {  let wasSaved = 0;   return new Promise(function (resolve, reject) {  fs.createReadStream(filePath)  .pipe(csv({ separator: ";" }))  .on(  "data",  Meteor.bindEnvironment((row) =gt; {  const toSave = {  ...row,  _id: Random.id(),  };  saveData(toSave);  wasSaved    console.log(wasSaved)  })  )  .on("end", () =gt; {  console.log("CSV file successfully processed");  console.log(filePath);  })  .on("error", reject);  }); };  

Анализ начинается хорошо, и я вижу, что 176000 строк первого файла были сохранены в журнале консоли. Однако в конце процесса строки я никогда не увижу, как срабатывает кнопка on («конец», и поэтому она никогда не переходит к следующему файлу.

Размер файла составляет около 50 МБ, и сохранение данных в БД для первого файла работает гладко, но не может добраться до второго файла, так как нет конца первому анализу. Есть идеи ?