NestJS+TypeORM对接PostgreSQL存储上传文件的字段类型配置问题
方案1:优先推荐-存储文件访问路径
字段类型配置
- 实体类中
attachFile直接定义为string类型即可 - TypeORM 列配置用
varchar类型,长度设置255~500足够存储文件路径
代码示例:
@Column({ type: 'varchar', length: 500, nullable: true // 附件非必填的话可开启 }) @IsOptional() @IsString() attachFile: string;
配套逻辑
前端提交文件后,后端先将PDF文件存储到本地静态资源目录、云对象存储等位置,生成可访问的资源路径,再将路径字符串存入该字段即可。
优势
- 数据库体积小,查询性能不受文件大小影响
- 前端预览、下载文件时可直接使用路径,无需额外转码处理
- 运维备份、迁移成本低
方案2:特殊场景使用-直接存储文件二进制
如果有合规要求必须将文件存在数据库内,才选择该方案:
字段类型配置
- 实体类中
attachFile定义为Buffer类型 - TypeORM 列配置根据数据库类型选择:MySQL用
longblob,PostgreSQL用bytea
代码示例:
@Column({ type: 'longblob', // PostgreSQL替换为'bytea' nullable: true }) attachFile: Buffer;
注意事项
该方案会导致数据库体积快速膨胀,查询、备份效率大幅下降,无特殊需求不建议使用。
内容的提问来源于stack exchange,提问作者Shruti sharma
相关产品推荐
相关产品推荐

