本文以RBAC权限管理中的用户和角色举例,两个实体存在多对多的关系,一个用户拥有多个角色,一个角色属于多个用户。typeorm的中文文档没有对自定义中间表的说明,发现英文有相关说明,但示例代码貌似有问题。
一、中间表有自定义字段的处理
在用户user和role实体之外,新建一个roleUse的实体(记录用户和角色的关联关系),如此本来是多对多的关系,变成了user和role与roleUser二组一对多的关系,这样虽然会多定义一个实体,但好处是可以中间表可以扩展定义其它额外的数据
用户实体 user.entity.ts
import { Entity, Column, Index, ManyToMany, JoinColumn, OneToMany, JoinTable, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm';
import { Role } from '../../admin/role/role.entity';
import { UserRole } from '../../admin/role/roleUser.entity';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 100 })
@Index({ unique: true })
name: string;
@OneToMany(type => UserRole, userRole =>