TypeORM: Установите значение по умолчанию на выбранное значение из таблицы

#node.js #typescript #nestjs #typeorm

Вопрос:

У меня есть таблица с именем «роли», в которой я определяю все роли. Он содержит два столбца «идентификатор», который является uuid, и «имя», которое является уникальным именем роли.

Каждый раз, когда я создаю пользователя, я хочу установить в качестве значения по умолчанию роль «пользователь», которая будет извлекаться по ее уникальному имени и сохранять его идентификатор роли в таблице «пользователь».

Вот мой код :

 export class User extends Common {
  @Column({ name: 'email' })
  email: string;

  @Column({ name: 'first_name' })
  firstName: string;

  @Column({ name: 'last_name' })
  lastName: string;

  @Column({ name: 'password' })
  password: string;

  @Column({ name: 'role_id' })
  roleId: string;

  @OneToMany(() => Role, (role) => role.name)
  @JoinColumn({ name: 'role_id' })
  role: Role;
}
 

Я не могу найти в документации Typeorm, как установить по умолчанию значение select, где результат соответствует моему состоянию.

Что-то вроде этого

 @Column({ name: 'role_id', default: Role.findOne({..}).id })
roleId: string;
 

Возможно ли это вообще ?

В случае, если это невозможно, могу ли я установить его, получив роль в операторе @BeforeInsert, как это

 @BeforeInsert()
public async setDefaultRoleToUser() {
  const role = Role.findOne({ ... });
  this.role = role.id;
}
 

В случае, если оба метода работают, какой из них будет наиболее оптимальным ?

С уважением,

Комментарии:

1. Ни у кого нет идеи ? :/