【问题标题】:TypeORM PrimaryGeneratedColumn UUID : Null value in column id on saveTypeORM PrimaryGeneratedColumn UUID:保存时列 id 中的空值
【发布时间】:2021-11-23 02:24:03
【问题描述】:

我有一个带有 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

【问题讨论】:

  • 检查job表中的id列是否有默认值?

标签: node.js postgresql nestjs typeorm


【解决方案1】:

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

【讨论】:

  • 我删除了数据库并重新创建了它。没有任何改变
【解决方案2】:

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

改为:

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

或者

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

【讨论】:

    猜你喜欢
    • 2022-07-21
    • 1970-01-01
    • 2018-07-21
    • 2021-09-06
    • 2020-06-20
    • 1970-01-01
    • 2019-02-08
    • 2019-03-27
    • 2022-01-16
    相关资源
    最近更新 更多