使用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
相关产品推荐
相关产品推荐

