TypeORM PrimaryGeneratedColumn UUID:保存时列 id 中的空值

TypeORM PrimaryGeneratedColumn UUID : Null value in column id on save

我得到了一个带有 typeORM 和 postgresl 数据库的 NestJs 项目。我想要具有 id 的实体作为生成的 uuid。当我保存时,似乎没有生成 uuid 并且实体是用空 id 保存的。

我的实体文件:

import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
import { JobStatusEnum } from './jobStatus.enum';

@Entity()
export class Job {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column()
  name: string;

  ...
}

我的服务:

import { Injectable } from '@nestjs/common';
import { Job } from '../model/job.entity';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';

@Injectable()
export class JobService {
  constructor(@InjectRepository(Job) private jobRepository: Repository<Job>) {}

  create(): Promise<Job> {

    const job: Job = {
      id: null,
      name: 'Job Name',
      ...
    };

    return this.jobRepository.save(job);
  }
  ...
}

我收到的错误消息:

UnhandledPromiseRejectionWarning: QueryFailedError: null value in column "id" of relation "job" violates not-null constraint

这个问题是因为你改变了你的模式,但数据库仍然使用以前的模式 您必须删除 table 一次并重新创建它

显然,如果我指定 id 为 null,它不适用于 uuid 生成。

相反:

const job: Job = {
  name: 'Job Name',
  ...
};

const job: new Job();
job.name = 'Job Name';
...