You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用nest-csv-parser遭遇ParsedData与Asset[]类型不匹配错误

解决nest-csv-parser类型匹配错误问题

错误原因很明确:csvParser.parse()方法返回的是ParsedData<T>类型对象,而非直接的Asset[]数组。该对象包含list属性(存储解析后的实体数组)以及其他元数据,你直接将其赋值给Asset[]类型变量,导致类型不兼容。

修复步骤:

  • 调整变量赋值方式,直接提取返回结果中的list属性作为实体数组:
    @Get('import')
    async parseCSVFile()
    {
        const csvPath = getCSVFile();
        const stream = fs.createReadStream(csvPath);
        // 方式1:先接收完整结果再提取list
        const parsedData = await this.csvParser.parse(stream, Asset);
        const entities: Asset[] = parsedData.list;
        // 方式2:解构赋值直接获取list
        // const { list: entities } = await this.csvParser.parse(stream, Asset);
        await this.assetService.addCSV(entities);
        return {
            data: {
                message: "File uploaded successfully!",
            }
        }
    }
    
  • 可选:确保实体类列映射正确
    如果CSV列名和Asset类属性名不一致,需要用@CsvColumn()装饰器指定映射关系,避免解析后属性值为空:
    import { CsvColumn } from 'nest-csv-parser';
    
    class Asset {
        @CsvColumn({ name: 'asset_name' }) // 假设CSV列名为asset_name
        name: string;
        @CsvColumn() // 列名和属性名一致时可省略配置
        ref_number: string;
        // 其余属性同理配置
        external_ref_number: string;
        type: string;
        condition: string;
        description: string;
        notes: string;
        upload_date: string;
        expiry_date: string;
        site_id: string;
    }
    

内容的提问来源于stack exchange,提问作者Graham Morby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:07:12