使用 csv-parser 仅 return 文件 headers

Use csv-parser to only return file headers

我正在查看将 csv 文件解析为 JSON 的 NPM 包 csv-parser。根据提供的示例,您可以通过以下方式逐行读取csv文件:

fs.createReadStream('data.csv')
  .pipe(csv())
  .on('data', (rowData) => console.log(rowData))
  .on('end', () => { console.log("done reading the file") });

有什么办法只能 return CSV 文件的 header 值吗?

您可以使用 headers 事件

fs.createReadStream('data.csv')
  .pipe(csv())
  .on('headers', (headers) => {
    console.log(`First header: ${headers[0]}`)
  })

来自官方文档

https://github.com/mafintosh/csv-parser#headers-1

Emitted after the header row is parsed. The first parameter of the event callback is an Array[String] containing the header names.

使用.on('headers', (headers)事件

fs.createReadStream('data.csv')
  .pipe(csv())
  .on('headers', (headers) => {
    console.log(headers)
  })

除了这个答案https://whosebug.com/a/66756097/12285424,如果你只需要读取headers,你应该销毁读取流以阻止它解析整个文件,例如:

let myHeaders;
let readStream = fs.createReadStream('data.csv');
readStream
  .pipe(csv())
  .on('headers', (headers) => {
    console.log(`First header: ${headers[0]}`)
    myHeaders = headers;
    readStream.destroy();
  })