Tyyppiturvallinen kyselyiden muodostus
Rakentakaa kyselyitä, jotka hylkäävät virheelliset sarakkeet jo käännösaikana.
Tyyppiturvallinen kyselyiden muodostus on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu TypeScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.
Kyselyt eivät voi viitata tuntemattomiin sarakkeisiin
Tyypitysturvallinen kyselyrakentaja hylkää taulukossa olemattomien sarakkeiden nimet jo käännösaikana. Sarakkeisiin viitataan tyypitettyjen objektien, ei raakojen merkkijonojen, kautta.
Tyypitetyt sarakeviittaukset
Kun taulukko on määritelty, jokainen sarake on taulukko-objektin ominaisuus. Suodattimille ja select-operaatioille välitetään nämä ominaisuudet, ei merkkijonoja.
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));Tuntematon sarake = käännösvirhe
Koska sarakkeet ovat todellisia ominaisuuksia, kirjoitusvirheet havaitaan heti. Merkkijonoihin perustuvaa kiertotietä ei ole.
await db.select().from(users).where(eq(users.idd, 1));
// ^^^^
// Error: Property "idd" does not exist on the users table.Tyypitetyt vertailuoperandit
eq-operaattorien kaltaiset operaattorit ovat saraketyypin suhteen geneerisiä. Numerosarakkeen vertaaminen merkkijonoon on tyyppivirhe.
eq(users.age, 30); // ok: age is number
eq(users.age, "thirty"); // Error: string is not assignable to numberTiettyjen sarakkeiden valitseminen
Välittäkää objekti, jonka arvoja ovat sarakeviittaukset, jos haluatte valita osajoukon. Valitsemistanne avaimista tulee tuloksen avaimet.
const partial = await db
.select({ id: users.id, name: users.name })
.from(users);
// result rows: { id: number; name: string }[]Muiden taulukoiden sarakkeiden hylkääminen
Select-kuvaus rajoittuu kyselyssä käsiteltävien taulukoiden sarakkeisiin. Liittymättömän taulukon sarakkeeseen viittaaminen aiheuttaa käännösvirheen.
await db
.select({ title: posts.title }) // posts not in this query
.from(users);
// Error: posts.title is not part of the FROM clause.Koostettavat ehdot
Ehtoja voi yhdistää and-, or- ja not-operaatioilla. Jokainen osa säilyy tyypitettynä, joten virheellinen ehto havaitaan myös syvällä ehtopuussa.
import { and, gt, eq } from "drizzle-orm";
const q = db.select().from(users).where(
and(gt(users.age, 18), eq(users.isAdmin, false))
);Järjestäminen ja rajoittaminen
orderBy ottaa myös tyypitettyjä sarakeviittauksia, joten taulukossa olemattoman sarakkeen mukaan ei voi järjestää.
import { desc } from "drizzle-orm";
await db.select().from(users).orderBy(desc(users.age)).limit(10);Miten hylkääminen toimii
Rakentaja on taulukkotyypin suhteen geneerinen. where- ja select-allekirjoitukset hyväksyvät vain tyypin Column<TTable> arvoja, joten kääntäjä hylkää rakenteellisesti kaiken muun.
// Conceptual signature
declare function select<T>(
table: T,
cols: { [k: string]: ColumnOf<T> }
): Query;Myös insertit ovat tyypitettyjä
Insert-arvot tarkistetaan insert-mallia vasten. Puuttuvat pakolliset kentät tai väärän tyyppiset arvot aiheuttavat käännösvirheen ennen SQL:n suorittamista.
await db.insert(users).values({
name: "Ada",
isAdmin: false,
// missing fields would error; extra unknown keys error too
});Miksi tästä on hyötyä
Useimmat ORM-virheet johtuvat uudelleennimetystä tai väärin kirjoitetusta sarakkeesta, joka havaitaan vasta ajonaikana. Tyypitysturvallinen rakentaja muuttaa nämä editorin punaisiksi aaltoviivoiksi jo kauan ennen käyttöönottoa.
Pikatarkistus
Varmistakaa, että hallitsette tyypitysturvallisten kyselyiden muodostamisen.
Kertaus
Tyypitysturvallisessa kyselyiden muodostamisessa käytetään tyypitettyjä sarakeviittauksia merkkijonojen sijaan. Tuntemattomat sarakkeet, väärän tyyppiset operandit ja taulukoiden FROM-lauseen ulkopuoliset sarakkeet muuttuvat käännösvirheiksi. Rakentaja on taulukon suhteen geneerinen, joten tyyppijärjestelmä varmistaa kelvollisuuden rakenteellisesti.
Opi TypeScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 101
- Oppitunnit
- 352
Usein kysytyt kysymykset
Onko oppitunti ”Tyyppiturvallinen kyselyiden muodostus” ilmainen?
Kyllä – oppitunnin ”Tyyppiturvallinen kyselyiden muodostus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko TypeScript Academy-kurssin, päivitä CoddyKit PROhon. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tyyppiturvallinen kyselyiden muodostus”?
Rakentakaa kyselyitä, jotka hylkäävät virheelliset sarakkeet jo käännösaikana. Harjoittelet TypeScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni TypeScript Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin TypeScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Tyyppiturvallinen kyselyiden muodostus”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä TypeScript Academy-oppitunnilla?
Kyllä. Jokainen TypeScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Skeemasta tyypiksi -kuvaus
- Tyyppiturvallinen kyselyiden muodostus
- Kyselytulosten muodon päättely
- Relaatiot ja liitokset tyyppien avulla