【问题标题】:"PrimaryGeneratedColumn" NOT NULL constraint error“PrimaryGeneratedColumn”NOT NULL 约束错误
【发布时间】:2021-04-23 14:29:38
【问题描述】:

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

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"
}

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

我看过其他帖子,但对我没有帮助。它适用于较旧版本的 typeorm。

为什么 TypeOrm 强制执行约束,即使它不应该这样做?

【问题讨论】:

    标签: node.js nestjs typeorm


    【解决方案1】:

    问题出在类验证器上。添加了@IsOptional

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

    【讨论】:

      猜你喜欢
      • 2019-03-27
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-31
      • 1970-01-01
      • 2010-12-27
      相关资源
      最近更新 更多