NestJS+TypeORM+PostgreSQL创建数据时updated_at日期异常
问题解决:NestJS + TypeORM 创建数据时 updated_at 日期异常
问题分析
创建新数据时updated_at显示旧日期,但更新数据时正常,核心原因有两点:
@UpdateDateColumn手动配置了default和onUpdate,与TypeORM内置的自动时间赋值逻辑冲突- 直接保存DTO而非实体实例,导致TypeORM未触发自动时间字段的初始化逻辑
解决方案
1. 修正通用实体的@UpdateDateColumn配置
TypeORM的@UpdateDateColumn会自动在插入和更新时设置当前时间,无需手动指定default和onUpdate,移除这些冗余配置:
export class CommonEntity extends BaseEntity { // ...其他字段保持不变 @UpdateDateColumn({ name: "updated_at", type: "timestamptz", select: true, nullable: true }) updatedAt: Date; // ...其他字段保持不变 }
2. 创建新数据时先实例化实体
不要直接保存DTO,先通过Repository的create方法生成实体实例,再执行保存操作,确保TypeORM触发自动字段的赋值逻辑:
// 替换原来的创建逻辑 const newDoc = this.enquiryDocRepo.create(enquiryDocDto); await this.enquiryDocRepo.save(newDoc); return { data: newDoc };
3. 检查数据库表结构(可选)
如果上述操作后仍有问题,检查数据库中updated_at字段的默认值,确保设置为CURRENT_TIMESTAMP而非固定的旧日期,避免数据库层面的默认值覆盖TypeORM的赋值。
内容的提问来源于stack exchange,提问作者Code Guru
相关产品推荐
相关产品推荐

