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

NestJS+TypeORM+PostgreSQL创建数据时updated_at日期异常

问题解决:NestJS + TypeORM 创建数据时 updated_at 日期异常

问题分析

创建新数据时updated_at显示旧日期,但更新数据时正常,核心原因有两点:

  1. @UpdateDateColumn手动配置了default和onUpdate,与TypeORM内置的自动时间赋值逻辑冲突
  2. 直接保存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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:23:23