TypeORM 是一个开源的对象关系映射(ORM)库,用于在 Node.js、浏览器、Ionic、Cordova 和 Electron 等平台上与数据库进行交互。它支持多种数据库,包括 MySQL、PostgreSQL、SQLite、Microsoft SQL Server 等。
要设置自定义id名称的多对多关系,可以按照以下步骤进行:
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToMany(() => Role)
@JoinTable()
roles: Role[];
}
@Entity()
export class Role {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToMany(() => User, user => user.roles)
users: User[];
}
@PrimaryGeneratedColumn()
装饰器来定义自动生成的id字段。如果要设置自定义id名称,可以使用 @PrimaryColumn()
装饰器,并指定名称和类型。@Entity()
export class User {
@PrimaryColumn({ name: 'user_id', type: 'int' })
userId: number;
// ...
}
@Entity()
export class Role {
@PrimaryColumn({ name: 'role_id', type: 'int' })
roleId: number;
// ...
}
@ManyToMany()
装饰器来定义多对多关系。同时,使用 @JoinTable()
装饰器来指定关联表的名称和字段。@Entity()
export class User {
// ...
@ManyToMany(() => Role)
@JoinTable({
name: 'user_role',
joinColumn: {
name: 'user_id',
referencedColumnName: 'userId',
},
inverseJoinColumn: {
name: 'role_id',
referencedColumnName: 'roleId',
},
})
roles: Role[];
}
@Entity()
export class Role {
// ...
@ManyToMany(() => User, user => user.roles)
users: User[];
}
在上述代码中,我们定义了一个名为 user_role
的关联表,并指定了关联字段的名称和类型。
// 创建用户和角色
const user = new User();
user.userId = 1;
user.name = 'John';
const role = new Role();
role.roleId = 1;
role.name = 'Admin';
user.roles = [role];
// 保存用户和角色到数据库
await connection.manager.save(user);
以上是使用 TypeORM 设置自定义id名称的多对多关系的步骤。在实际应用中,可以根据具体需求进行调整和扩展。如果想了解更多关于 TypeORM 的信息,可以访问腾讯云的 TypeORM 产品介绍页面。
领取专属 10元无门槛券
手把手带您无忧上云