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

如何更新TypeORM实体可空列?TypeScript报错及数据库疑问

问题解答

1. 你忽略的点

TypeScript的可选属性?: number仅表示该属性可以是number或undefined,不包含null类型。你给lockedTimestamp赋值null,刚好触发了严格模式下的类型检查错误。

2. 可空列的定义问题

数据库层面的定义是正确的:nullable: true已经告诉TypeORM该列允许存储null。但TypeScript类型定义没跟上,需要把属性类型改成包含null的联合类型:

@Column({
    type: 'bigint',
    nullable: true,
})
lockedTimestamp?: number | null;

或者直接写成:

lockedTimestamp: number | null | undefined;

这样TypeScript就会允许赋值null、undefined或数值类型了。

3. 赋值undefined的数据库行为

不会报错。TypeORM对undefined的处理逻辑是:

  • 创建新实体时,undefined会被视为“未设置该字段”,数据库会自动给该列存入null(因为你已设置nullable: true);
  • 更新实体时,TypeORM不会把undefined对应的字段加入更新语句,数据库里该列的原有值会保持不变,不会触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:45:55