Home > Net >  How can I create a UUID FK column in NestJS?
How can I create a UUID FK column in NestJS?

Time:04-24

I am running into an odd issue where I can't create a FK relationship between two entities.

// organization.entity.ts

@PrimaryGeneratedColumn('uuid')
  id: string;

...

@OneToMany(() => User, (user) => user.organization)
  users: User[];
// user.entity.ts

@PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({
    type: 'uuid',
  })
  organizationId: string;

...

@ManyToOne(() => Organization, (organization) => organization.users)
  organization: Organization;

In my ormconfig.json file I have these settings (among connection creds)

...
"logging": true,
  "entities": [
    "dist/**/*.entity{.ts,.js}"
  ],
  "synchronize": true
...

I am using "typeorm": "^0.2.45" in my package.json file.

Key columns "organizationId" and "id" are of incompatible types: character varying and uuid.

How can I create an FK relationship between users & organizations?

CodePudding user response:

So from your question I understood is you want a "organizationId" field in your users table which will be a FK.

To create OnetoMany Relation between Organization and users do as below:

// organization.entity.ts

@Entity({ name: 'organizations' })
export class Organization {
  @PrimaryGeneratedColumn('uuid')
  id: string;

...

  @OneToMany(() => User, (user) => user.organization)
  users: User[];
}
// user.entity.ts

@Entity({ name: 'users' })
export class User {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ type: 'uuid' })
  organizationId: string;

...

  @ManyToOne(() => Organization, (organization) => organization.users)
  @JoinColumn({ name: 'organizationId' })
  organization: Organization;
}
  • Related