如何使用 FastCSV 识别不同的输入模式?

How to identify different input schemas with FastCSV?

以下代码适用于“Winner”类型。该技术是带有节点流的打字稿。

虽然有时有人会上传 winner-2 类型。我想查看 header 并根据 header.

更改格式类型

我可能

我正计划重写 header,因为存在不一致之处。

如何解决将这些不同的 CSV 输入规范化为一个理想化结构的问题? rxjs?

import {parse, RowTransformCallback} from "@fast-csv/parse";

 stream
     .pipe(parse({headers: true}))
     .pipe(format<Winner, Winner>({headers: true}))
     .transform((row, next): void => {
           this.processRow(row, next)
  })
     .pipe(process.stdout)
     .on('error', reject)
            .on('end',
                (rowCount: number) => console.log(`Parsed ${rowCount} rows`));
    });

我在映射函数中重写了 headers 以获取架构 a 和架构 b 并将它们转换为目标架构

 stream
    .pipe(parse({
      headers: headers => headers.map(h => {
        if (h === 'Email') {
           return 'email'
        }
        if (h === 'Firstname') {
           return 'firstName'                  
        }
        return h
     }),
    }))