Когда вы создаете роль с помощью TypeORM в NestJS, вы можете использовать хуки жизненного цикла сущностей, чтобы создать данные в связанных таблицах.
1. Определите связи между вашими таблицами с помощью декораторов TypeORM, таких как `@OneToOne`, `@OneToMany` или `@ManyToMany`. Например:
```typescript
@Entity()
export class Role {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OneToOne(() => User, user => user.role)
user: User;
}
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OneToOne(() => Role, role => role.user)
role: Role;
}
```
2. В вашем репозитории роли или сервисе роли добавьте хук `@AfterInsert` для создания данных в связанных таблицах. Например:
```typescript
@EntityRepository(Role)
export class RoleRepository extends Repository<Role> {
@AfterInsert()
async createRelatedData(role: Role) {
const user = new User();
user.name = 'John Doe';
user.role = role;
await this.manager.save(user);
}
}
```
3. При создании роли вызовите метод `.save()` вашего репозитория роли, чтобы запустить хук `@AfterInsert` и создать данные в связанной таблице. Например:
```typescript
async createRole() {
const role = new Role();
role.name = 'Admin';
await this.roleRepository.save(role);
}
```
Теперь при создании роли будет также создан пользователь с этой ролью в таблице пользователей.
Примечание: Если у вас есть более сложные отношения или несколько связанных таблиц, вам может потребоваться использовать другие хуки жизненного цикла сущностей, такие как `@AfterUpdate` или `@AfterRemove`, чтобы обрабатывать связи соответствующим образом.