Typeorm новой записи не присваивается айдишник новой записи связанной сущности
Есть две связанные сущности: юзер и его контакты. При создании нового юзера его контакты тоже новые (т.к. уникальные). Запись в базе юзера успешно создается. Для контактов тоже, но у них отсутствует привязка к новому пользователю (user_id = null).
Как сделать так, чтобы новой записи контактов присваивалась новая запись пользователя автоматом?
@Entity()
@TableInheritance({ column: { type: 'varchar', name: 'type' } })
export abstract class User extends Member {
@OneToMany('Contact', (contact: Contact) => contact.getUser, {
cascade: true,
})
public contacts: Contact[];
}
@Entity()
export class Contact {
@ManyToOne(() => User, (user) => user.contacts)
@JoinColumn({ name: 'user_id' })
public user: User;
}
export class CreateUserDTO implements Pick<User, 'contacts' | 'password'> {
contacts: Contact[];
password: string;
}
public async createEmployee(dto: CreateUserDTO): Promise<Employee> {
const newEmployee = await this.employeeRepository.create(dto);
const defaultRole = await this.roleService.getRoleByName(
RoleEnum.USER,
);
newEmployee.setRoles([defaultRole]);
newEmployee.setLogin(
newEmployee.getContacts.find((p) => p.getType === ContactTypeEnum.EMAIL)
.getValue,
);
newEmployee.setMemberType(MemberType.EMPLOYEE);
return this.employeeRepository.save(newEmployee);
}
UPD Геттеры в декораторах, оказывается, нельзя использовать
@Entity()
@TableInheritance({ column: { type: 'varchar', name: 'type' } })
export abstract class User extends Member {
@OneToMany(() => Contact, (contact) => contact.user, {
cascade: true,
})
public contacts: Contact[];
}
Источник: Stack Overflow на русском