typeorm 错误:列中的空值违反了非空:允许空值?在 fk 中

Min*_*ing 9 typescript typeorm

您好,我有两个实体员工和部门,其中一个部门有 0 或 1 个经理\n我尝试添加一个没有经理的部门,但收到此错误:

\n
\n

错误:错误:列“manager_id”中的空值违反了非空\n约束

\n
\n

我尝试添加一个只有名称但没有经理的部门\n我如何允许空值 \xe2\x80\x8b\xe2\x80\x8bin a fk

\n

实体员工:

\n
@Entity({ name: 'employees' })\nexport class Employee extends SharedProp {\n  constructor(firstName: string, lastName: string) {\n    super();\n    this.firstName = firstName;\n    this.lastName = lastName;\n  }\n  @PrimaryGeneratedColumn('uuid')\n  id: string;\n\n  @Column({ name: 'matricula', nullable: false })\n  matricula: string;\n\n  @Column({ name: 'first_name', nullable: false })\n  firstName: string;\n\n  @Column({ name: 'last_name', nullable: false })\n  lastName: string;\n\n  @Column()\n  user_id: string;\n\n  @Column()\n  departament_id: string;\n\n  @OneToOne(() => Departament, departament => departament.manager)\n  @ManyToOne(\n    () => Departament,\n    (departament: Departament) => departament.employees,\n  )\n  @JoinColumn({ name: 'departament_id' })\n  departament: Departament;\n\n  @OneToOne(() => User)\n  @JoinColumn({ name: 'user_id' })\n  user: User;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

实体部门:

\n
@Entity({ name: 'departaments' })\nexport class Departament {\n  @PrimaryGeneratedColumn('uuid')\n  id: string;\n\n  @Column()\n  departament_name: string;\n\n  @Column()\n  manager_id: string;\n\n  @OneToOne(() => Employee, employee => employee.departament)\n  @JoinColumn({ name: 'manager_id' })\n  manager: Employee;\n\n  @OneToMany(() => Employee, (employee: Employee) => employee.departament)\n  employees: Array<Employee>;\n\n  @CreateDateColumn({ name: 'created_at' })\n  createdAt: Date;\n\n  @UpdateDateColumn({ name: 'updated_at' })\n  UpdatedAt: Date;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

小智 -6

添加nullable: true可能为 null 的列。例子:

@Column({nullable: true })
user_id: string;
Run Code Online (Sandbox Code Playgroud)

此错误来自您的数据库。所以之后要更新迁移。还尝试将默认值设置为 null,如下所示:

@Column({nullable: true, default: null })
user_id: string;
Run Code Online (Sandbox Code Playgroud)

最后使用迁移将数据库中的表字段修改为可为空