Задать вопрос
Ответы пользователя по тегу Базы данных
  • TypeOrm, как правильно использовать query runner?

    Vladddosss
    @Vladddosss Автор вопроса
    Чтобы транзакции работали нужно queryRunner передать createQueryBuilder.
    Касательно примечания в конце вопроса, ответ - нет. Так транзакции работать не будут.

    const queryRunner = this.dataSource.createQueryRunner();
        queryRunner.connect();
        queryRunner.startTransaction();
    
        try {
          const u = await this.repository
            .createQueryBuilder('u', queryRunner)
            .update({ password: passwordHash })
            .where('email = :email', { email: user.email })
            .returning('*')
            .updateEntity(true)
            .execute();
    
          const p = await this.passwordUpdateLogsRepository
            .createQueryBuilder('p', queryRunner)
            .insert()
            .values({ user: { id: user.id } })
            .execute();
    
          queryRunner.commitTransaction();
    
          return new HttpException(lang.ru.passwordChanged, HttpStatus.OK);
        } catch (error) {
          console.log(error);
          queryRunner.rollbackTransaction();
          throw new BadRequestException(lang.ru.error);
        } finally {
          queryRunner.release();
        }
    Ответ написан
    Комментировать