Query Runner
What is a QueryRunner?​
Each new QueryRunner instance takes a single connection from connection pool, if RDBMS supports connection pooling.
For databases not supporting connection pools, it uses the same connection across the entire data source.
Creating a new QueryRunner instance​
Use createQueryRunner method to create a new QueryRunner:
const queryRunner = dataSource.createQueryRunner()
Using QueryRunner​
After you create a new instance of QueryRunner use connect method to actually get a connection from the connection pool:
const queryRunner = dataSource.createQueryRunner()
await queryRunner.connect()
Important: make sure to release it when it is not necessary anymore to make it available to the connection pool again:
await queryRunner.release()
After connection is released, it is not possible to use the query runner methods.
QueryRunner has a bunch of methods you can use, it also has its own EntityManager instance,
which you can use through manager property to run EntityManager methods on a particular database connection
used by QueryRunner instance:
const queryRunner = dataSource.createQueryRunner()
// take a connection from the connection pool
await queryRunner.connect()
// use this particular connection to execute queries
const users = await queryRunner.manager.find(User)
// remember to release connection after you are done using it
await queryRunner.release()