Tür Güvenli Sorgu Oluşturma
Derleme zamanında geçersiz sütunları reddeden sorgular oluşturun.
Tür Güvenli Sorgu Oluşturma, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.
Bilinmeyen Sütunlara Başvuramayan Sorgular
Tür güvenli bir sorgu oluşturucu, tabloda bulunmayan sütun adlarını derleme zamanında reddeder. Sütunlara ham dizelerle değil, tür bilgisi taşıyan nesneler üzerinden başvurursunuz.
Tür Bilgisi Taşıyan Sütun Başvuruları
Bir tablo tanımlandıktan sonra her sütun, tablo nesnesinin bir özelliği olur. Süzgeçlere ve select işlemlerine dize yerine bu özellikleri geçirirsiniz.
import { eq } from "drizzle-orm";
// users.id and users.name are typed column objects
const rows = await db
.select()
.from(users)
.where(eq(users.id, 1));Bilinmeyen Sütun = Derleme Hatası
Sütunlar gerçek özellikler olduğundan yazım hataları hemen yakalanır. Dize tabanlı bir tür kaçış yolu yoktur.
await db.select().from(users).where(eq(users.idd, 1));
// ^^^^
// Error: Property "idd" does not exist on the users table.Tür Bilgisi Taşıyan Karşılaştırma İşlenenleri
eq gibi işleçler sütun türü üzerinde geneldir. Bir sayı sütununu dizeyle karşılaştırmak tür hatasına yol açar.
eq(users.age, 30); // ok: age is number
eq(users.age, "thirty"); // Error: string is not assignable to numberBelirli Sütunları Seçme
Bir alt kümeyi almak için değerleri sütun başvuruları olan bir nesne geçirin. Seçtiğiniz anahtarlar sonuçtaki anahtarlar olur.
const partial = await db
.select({ id: users.id, name: users.name })
.from(users);
// result rows: { id: number; name: string }[]Diğer Tablolardaki Sütunları Reddetme
select eşlemesi, sorgulanan tablo veya tabloların sütunlarıyla sınırlandırılır. İlişkisiz bir tablodan sütuna başvurmak derlemeyi başarısız kılar.
await db
.select({ title: posts.title }) // posts not in this query
.from(users);
// Error: posts.title is not part of the FROM clause.Birleştirilebilir Koşullar
Koşullar and, or ve not ile birleştirilir. Her parça tür bilgisi taşımaya devam eder; bu nedenle hatalı bir koşul, ağaçta ne kadar derinde olursa olsun yakalanır.
import { and, gt, eq } from "drizzle-orm";
const q = db.select().from(users).where(
and(gt(users.age, 18), eq(users.isAdmin, false))
);Sıralama ve Sınırlandırma
orderBy de tür bilgisi taşıyan sütun başvurularını kabul eder; böylece tabloda bulunmayan bir sütuna göre sıralama yapamazsınız.
import { desc } from "drizzle-orm";
await db.select().from(users).orderBy(desc(users.age)).limit(10);Reddetme Nasıl Çalışır
Oluşturucu, tablo türü üzerinde geneldir. where ve select imzaları yalnızca Column<TTable> türündeki değerleri kabul eder; bu nedenle derleyici diğer her şeyi yapısal olarak reddeder.
// Conceptual signature
declare function select<T>(
table: T,
cols: { [k: string]: ColumnOf<T> }
): Query;insert İşlemleri de Tür Bilgisi Taşır
insert değerleri insert modeliyle karşılaştırılarak denetlenir. Eksik gerekli alanlar veya yanlış değer türleri, herhangi bir SQL çalıştırılmadan önce derleme hatasına dönüşür.
await db.insert(users).values({
name: "Ada",
isAdmin: false,
// missing fields would error; extra unknown keys error too
});Faydası Nedir
ORM hatalarının çoğu, yalnızca çalışma zamanında fark edilen yeniden adlandırılmış veya türü yanlış yazılmış bir sütundan kaynaklanır. Tür güvenli bir oluşturucu, bunları dağıtımdan çok önce düzenleyicinizde kırmızı dalgalı çizgilere dönüştürür.
Hızlı Denetim
Tür güvenli sorgu oluşturma konusundaki kavrayışınızı doğrulayın.
Özet
Tür güvenli sorgu oluşturma, dizeler yerine tür bilgisi taşıyan sütun başvurularını kullanır. Bilinmeyen sütunlar, yanlış işlenen türleri ve FROM yan tümcesinde bulunmayan tablolara ait sütunların tümü derleme hatasına dönüşür. Oluşturucu tablo üzerinde geneldir; bu nedenle tür sistemi geçerliliği yapısal olarak zorunlu kılar.
Sıkça Sorulan Sorular
“Tür Güvenli Sorgu Oluşturma” dersi ücretsiz mi?
Evet — “Tür Güvenli Sorgu Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.
“Tür Güvenli Sorgu Oluşturma” dersinde ne öğreneceğim?
Derleme zamanında geçersiz sütunları reddeden sorgular oluşturun. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Tür Güvenli Sorgu Oluşturma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Şemadan Türe Eşleme
- Tür Güvenli Sorgu Oluşturma
- Sorgu Sonucu Biçimlerini Çıkarma
- Türlerle İlişkiler ve Birleştirmeler