advanced
Query builder
Переходите к TypeORM query builder, когда repository helpers плохо выражают joins, locking, pagination или partial selects.
Query builder TypeORM для сложных select, join, подзапросов, блокировок и частичных проекций, когда repository не хватает. Это проектирование SQL с алиасами и привязкой параметров.
await dataSource
.createQueryBuilder('order')
.innerJoin('order.customer', 'customer')
.where('order.status = :status', { status: 'open' })
.setLock('pessimistic_write')
.getMany();
На интервью: join, алиасы, пагинация, блокировки, выбранные столбцы, raw results, инспекция SQL.
Типовые ошибки: offset-пагинация с join неверна или медленна; raw mapping в обход предположений entity.
Компромисс — гибкость против утечек абстракции ORM.
Чеклист:
- Привязка параметров.
- SQL и планы.
- Пагинация с реальной кардинальностью join.
- Документируйте lock и изоляцию.