“PrimaryGeneratedColumn”NOT NULL 约束错误

时间:2021-04-23 06:12:33

标签: node.js nestjs typeorm

保存实体时出现空约束错误。

export abstract class BaseEntity {
    @PrimaryGeneratedColumn('uuid')
    id: string;

    @CreateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
    createOn: Date;

    @UpdateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
    updatedOn: Date;

    @DeleteDateColumn({ type: 'timestamp' })
    deletedOn: Date;
}

表定义:

CREATE TABLE "public"."mytable" (
    "id" uuid NOT NULL DEFAULT uuid_generate_v4(), 
    "name" character varying(256) NOT NULL,     
    "createOn" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    "updatedOn" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    "deletedOn" TIMESTAMP, "rawData" text NOT NULL, 
    CONSTRAINT "PK_a94b1ebd989b0e66e32761c1401" PRIMARY KEY ("id")
 )

当我在 nestjs 中插入一个新项目时,我得到:

{
   "statusCode": 400,
   "message": [
      "id must be a UUID"
   ],
   "error": "Bad Request"
}

当我使用数据库客户端插入记录时,它会自动生成值。

我看过另一篇文章,但对我没有帮助。它适用于旧版本的 typeorm。

为什么 TypeOrm 不应该强制执行约束?

1 个答案:

答案 0 :(得分:0)

问题是类验证器。添加@IsOptional

export class MyInDTO implements Readonly<MyDTO> {
  @ApiProperty({ required: true })
  @IsUUID()
  @IsOptional()
  id: string;