TypeORM QueryBuilder ile Gelişmiş Sorgular


TypeORM QueryBuilder ile Gelişmiş Sorgular

TypeORM, modern Node.js projelerinde en çok tercih edilen ORM kütüphanelerinden biridir. Karmaşık veri çekme ihtiyaçlarında, TypeORM QueryBuilder aracıyla gelişmiş ve dinamik sorgular oluşturmak oldukça kolaylaşır. Özellikle çoklu tablo ilişkilerinin ve esnek filtreleme seçeneklerinin olduğu projelerde QueryBuilder kullanmak performans ve okunabilirlik açısından önemli avantajlar sunar.

QueryBuilder ile Temel ve Gelişmiş Kullanımlar

QueryBuilder, hem basit sorguları hem de birden fazla tabloyu içeren karmaşık SQL sorgularını TypeScript ya da JavaScript dilinde daha okunaklı ve sürdürülebilir şekilde yazmanızı sağlar. Örneğin, kullanıcılar ve onlara ait gönderiler arasındaki ilişkiyi hem filtreleyip hem de sıralayabilir ve istenirse özel alanlar seçebilirsiniz.

Basit Örnek: Kullanıcı Listesi Çekme

const users = await dataSource
  .getRepository(User)
  .createQueryBuilder("user")
  .where("user.isActive = :isActive", { isActive: true })
  .orderBy("user.createdAt", "DESC")
  .getMany();

Join ve Grup By Kullanımı

Bir kullanıcının gönderi sayısını çekmek, gruplama ve join işlemlerini QueryBuilder ile rahatça yapılabilir:

const postCounts = await dataSource
  .getRepository(User)
  .createQueryBuilder("user")
  .leftJoinAndSelect("user.posts", "post")
  .select(["user.id", "user.username"])
  .addSelect("COUNT(post.id)", "postCount")
  .groupBy("user.id")
  .getRawMany();

Parametreli ve Dinamik Sorgular

QueryBuilder ile dinamik filtreler ekleyebilirsiniz. Bu, özellikle API geliştirmede büyük esneklik kazandırır.

const minAge = 18;
const country = "Turkey";

const results = await dataSource
  .getRepository(User)
  .createQueryBuilder("user")
  .where("user.age > :minAge", { minAge })
  .andWhere("user.country = :country", { country })
  .getMany();

Sonuç: TypeORM QueryBuilder ile Güçlü Sorgular

TypeORM QueryBuilder ile gelişmiş sorgular yazmak hem kodunuzu daha okunaklı hem de SQL enjeksiyonu gibi güvenlik risklerine karşı daha korunaklı hale getirir. Özellikle büyük ve karmaşık projelerde, QueryBuilder sayesinde yüksek performanslı ve esnek sorgular yazmak mümkündür. Sunduğu API ile hızlıca dinamik kompleks SQL'ler oluşturup, bakımı kolay projeler geliştirebilirsiniz.