TypeORM - это ORM-фреймворк для TypeScript и JavaScript, который позволяет разработчикам взаимодействовать с базами данных, используя объектно-реляционную модель (ORM). QueryRunner - это инструмент, предоставляемый TypeORM, который позволяет программному управлению SQL-запросами.
Чтобы правильно использовать QueryRunner, вам потребуется следовать нескольким шагам:
Шаг 1: Получение экземпляра QueryRunner
Сначала вам нужно получить экземпляр QueryRunner, чтобы начать использовать его методы. Это можно сделать с помощью функции createQueryRunner(), доступной у EntityManager или Connection:
import { getConnection } from "typeorm"; const connection = getConnection(); const queryRunner = connection.createQueryRunner();
Шаг 2: Начало транзакции
При работе с QueryRunner рекомендуется начинать с запуска транзакции, чтобы гарантировать целостность данных:
await queryRunner.startTransaction();
Шаг 3: Выполнение SQL-запросов
Теперь, когда у вас есть активный QueryRunner, вы можете использовать его методы для выполнения SQL-запросов. Вот несколько примеров:
3.1. Выполнение простого SQL-запроса:
await queryRunner.query("SELECT * FROM users");
3.2. Выполнение параметризованного SQL-запроса:
const name = "John"; await queryRunner.query("SELECT * FROM users WHERE name = ?", [name]);
3.3. Выполнение многострочного SQL-запроса:
const sql = ` SELECT users.id, users.name, COUNT(posts.id) as postCount FROM users INNER JOIN posts ON users.id = posts.userId GROUP BY users.id, users.name `; await queryRunner.query(sql);
Шаг 4: Завершение транзакции
После выполнения всех SQL-запросов необходимо завершить транзакцию:
await queryRunner.commitTransaction();
Если в ходе выполнения SQL-запросов произошла ошибка, вы также можете вызвать метод rollbackTransaction(), чтобы откатить транзакцию:
await queryRunner.rollbackTransaction();
Шаг 5: Освобождение ресурсов
Не забудьте освободить ресурсы, связанные с QueryRunner, после завершения работы:
await queryRunner.release();
Вот как вы можете правильно использовать QueryRunner в TypeORM. Не забывайте обрабатывать ошибки и проверять возвращаемые значения для обеспечения надежности и целостности вашего кода.