在typeorm中创建多对多关系的步骤如下:
// user.entity.ts
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable } from 'typeorm';
import { Role } from './role.entity';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToMany(() => Role)
@JoinTable()
roles: Role[];
}
// role.entity.ts
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany } from 'typeorm';
import { User } from './user.entity';
@Entity()
export class Role {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToMany(() => User, user => user.roles)
users: User[];
}
// app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './user.entity';
import { Role } from './role.entity';
@Module({
imports: [
TypeOrmModule.forRoot({
// 配置typeorm连接数据库的参数
// ...
entities: [User, Role], // 将实体类添加到typeorm的实体列表中
}),
],
})
export class AppModule {}
// user.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private userRepository: Repository<User>,
) {}
async getUserRoles(userId: number): Promise<Role[]> {
const user = await this.userRepository.findOne(userId, { relations: ['roles'] });
return user.roles;
}
}
以上就是在typeorm中创建多对多关系的步骤。在这个例子中,我们创建了User和Role两个实体类,并使用@ManyToMany
装饰器定义了它们之间的多对多关系。然后,在NestJS的模块中将实体类添加到typeorm的实体列表中,以便typeorm能够识别和管理它们。最后,我们可以使用typeorm的Repository来操作多对多关系,例如查询用户的角色列表。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云