Как заставить readStream указывать на другой файл в итерации зацикленного обещания - PullRequest
1 голос
/ 11 июля 2020

Я пытаюсь разобрать несколько файлов CSV в один JSON файл.

Моя проблема в том, что я не могу повторно использовать поток чтения, так как он не обновляет файл, из которого он читает. Итак, для каждой итерации l oop я продолжаю читать первый переданный ему файл csv.

Вот код, который я использую для чтения всех файлов CSV в каталоге, а затем обертывания экземпляра of createReadStream в обещании, ожидая результата, а затем переходим к синтаксическому анализу следующего файла CSV. (Он не считывает значения следующего файла CSV, он просто возвращает результат каждого переданного ему первого файла CSV)

Вот код, который я использую

const path = require("path");
const fs = require("fs");
const parse = require("csv-parse");

const parser = parse({
  delimiter: ","
});

function parseCSVFile(file) {
  return new Promise((resolve, reject) =>
      fs
          .createReadStream(file)
          .pipe(parser)
          .on("data", (data) => {
            console.log(data);
          })
          .on("end", () => {
            resolve();
          })
          .on("error", (error) => reject(error))
  )
}

async () => {
  const csvFiles = fs.readdirSync(path.join(__dirname, "/csvFiles"));
  for (let file of csvFiles) {
    await parseCSVFile(path.join(file);
  }
})();

Любая помощь / совет приветствуются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...