Привет! Для использования `query runner` в TypeOrm вы можете выполнить следующие шаги: 1. Создайте экземпляр `queryRunner` с помощью метода `createQueryBuilder`: ```typescript const queryRunner = connection.createQueryRunner(); ``` 2. Начните транзакцию с помощью метода `startTransaction`: ```typescript await queryRunner.startTransaction(); ``` 3. Выполните нужные вам операции с базой данных, используя `queryRunner`. Например, вы можете выполнить insert, update или delete операции: ```typescript await queryRunner.query("INSERT INTO user (name) VALUES ('John')"); await queryRunner.query("UPDATE user SET age = 30 WHERE name = 'John'"); await queryRunner.query("DELETE FROM user WHERE age > 40"); ``` 4. Завершите транзакцию с помощью метода `commitTransaction`: ```typescript await queryRunner.commitTransaction(); ``` 5. Не забудьте закрыть `queryRunner` после завершения: ```typescript await queryRunner.release(); ``` Примечание: Если в любой момент транзакции возникнет ошибка, вы можете откатить ее с помощью метода `rollbackTransaction`. Например: ```typescript await queryRunner.rollbackTransaction(); ``` Это все, что вам нужно знать для правильного использования `query runner` в TypeOrm. Удачи!
задаем условие для обновления записей .returning('*')
указываем, что нужно вернуть обновленные записи .updateEntity(true)
указываем, что нужно обновить сущности в памяти .execute();
выполняем запрос и получаем результат const p = await this.passwordUpdateLogsRepository .createQueryBuilder('p', queryRunner)
создаем экземпляр QueryBuilder, передавая в него аргументы ('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();
освобождаем ресурсы }
Чтобы транзакции работали, нужно использовать метод createQueryBuilder и передать в него объект queryRunner. Примечание в конце вопроса имеет отрицательный ответ - транзакции не будут работать, если не будут использованы указанные методы и блоки кода. const queryRunner = this.dataSource.createQueryRunner(); queryRunner.connect(); queryRunner.startTransaction(); try { const u = await this.repository .createQueryBuilder('u', queryRunner)
создаем экземпляр QueryBuilder, передавая в него аргументы ('u', queryRunner) .update({ password: passwordHash }) .where('email = :email', { email: user.email })