Lesson 18 / 33

Queries & QueryBuilder

Build complex queries with TypeORM's fluent QueryBuilder API.

QueryBuilder basics

Use createQueryBuilder() for complex WHERE, JOIN, and ORDER BY logic.

const users = await this.userRepository
  .createQueryBuilder('user')
  .where('user.age > :minAge', { minAge: 18 })
  .andWhere('user.role = :role', { role: 'admin' })
  .orderBy('user.name', 'ASC')
  .getMany();

Joins with QueryBuilder

leftJoinAndSelect() to fetch related entities; leftJoin() if you only need to filter on them.

const users = await this.userRepository
  .createQueryBuilder('user')
  .leftJoinAndSelect('user.posts', 'post')
  .where('post.title LIKE :keyword', { keyword: '%NestJS%' })
  .getMany();