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';
...
我得到了一个带有 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';
...