NestJs Tyeporm - почему ограничение уникальности в сущности вызывает исключение и приводит к сбою приложения - PullRequest
0 голосов
/ 19 марта 2019

У меня есть объект, описанный как

export class TeamEntity {
  @PrimaryGeneratedColumn('uuid')
  readonly id: string;

  @CreateDateColumn()
  readonly createdAt: Date;

  @UpdateDateColumn()
  updatedAt: Date;

  @Column({ unique: true })
  @Unique('Duplicate name', ['name'])
  name: string;
}

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

Проблема в том, что все приложение аварийно завершает работу, когда это ограничение не выполняется, и мне нужно перезапустить приложение, чтобы снова включить его в сеть.

Странное исключение из этого правила состоит в том, что когда console.log() присутствует где-либо в пути выполнения, приложение не падает, выдается правильное сообщение об ошибке и приложение продолжает работу.

Есть ли причина, по которой приложение не аварийно завершает работу при наличии console.log()? И если да, как я могу остановить сбой приложения при удалении этой строки?

1 Ответ

0 голосов
/ 17 июля 2019

Вы можете использовать Insert ignore для этой проблемы

await getManager()
      .createQueryBuilder()
      .insert()
      .orIgnore(true)
      .into(TeamEntity)
      .values({name: 'John'})
      .execute();
...