Relaatiot ja edistyneet kyselyt Prismalla
Mallintakaa one-to-many- ja many-to-many-relaatioita ja tehkää niiden yli kyselyitä nested write-, include-, select-, suodatus- ja sivutustoiminnoilla.
Relaatiot ja edistyneet kyselyt Prismalla on ilmainen Next.js 15 -täyden pinon verkkosovellukset-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Next.js 15 -täyden pinon verkkosovellukset-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Next.js 15 -täyden pinon verkkosovellukset-kurssilla on yhteensä 4 oppituntia.
Miksi relaatiot?
Oikean maailman tiedot liittyvät toisiinsa: käyttäjällä on useita julkaisuja ja julkaisulla on useita tunnisteita. Prisma mallintaa nämä relaatiot skeemassa, jotta voit kulkea niiden välillä tyyppiturvallisissa kyselyissä.
Yksi moneen -relaatio skeemassa
Yksi moneen -relaatio yhdistää päätietueen useisiin alitietueisiin viiteavaimen avulla. Määritä skeemassa relaation molemmat puolet.
model User {
id Int @id @default(autoincrement())
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
authorId Int
author User @relation(fields: [authorId], references: [id])
}Moneen moneen
Prisma tukee implisiittistä moneen moneen -relaatiota käyttämällä molemmilla puolilla vain taulukkokenttiä; se hallinnoi liitostaulua puolestasi.
model Post { id Int @id @default(autoincrement()) tags Tag[] }
model Tag { id Int @id @default(autoincrement()) posts Post[] }Relaatioihin liittyvien tietojen sisällyttäminen
Kyselyt palauttavat oletusarvoisesti vain mallin kentät. Käytä include-määritettä myös relaatiotietueiden hakemiseen.
const user = await prisma.user.findUnique({
where: { id: 1 },
include: { posts: true },
});Tiettyjen kenttien valitseminen
Hae select-määritteellä vain tarvitsemasi sarakkeet — näin tietosisällöt ovat pienempiä ja kyselyt nopeampia. Voit käyttää select-määritettä sisäkkäin relaatioille.
const posts = await prisma.post.findMany({
select: { id: true, title: true, author: { select: { name: true } } },
});Sisäkkäiset kirjoitukset
Luo päätietue ja sen alitietueet yhdellä kutsulla sisäkkäisen create-määritteen avulla. Prisma suorittaa operaation transaktiona.
await prisma.user.create({
data: {
name: 'Ada',
posts: { create: [{ title: 'Hello' }, { title: 'World' }] },
},
});Suodattaminen where-määritteellä
Rakenna monipuolisia suodattimia operaattoreilla, kuten contains, gt ja in, ja yhdistä ne AND/OR-operaattoreilla.
const recent = await prisma.post.findMany({
where: {
published: true,
title: { contains: 'Prisma' },
},
});Relaatioihin perustuva suodattaminen
Voit suodattaa päätietueita niiden alitietueisiin kohdistuvan ehdon perusteella käyttämällä määritteitä some, every tai none.
const authors = await prisma.user.findMany({
where: { posts: { some: { published: true } } },
});Järjestäminen ja sivutus
Järjestä tulokset orderBy-määritteellä ja sivuta ne take/skip-määritteillä (offset) perinteistä sivutusta varten.
const page = await prisma.post.findMany({
orderBy: { createdAt: 'desc' },
take: 10,
skip: 20,
});Kursoripohjainen sivutus
Suurissa tai reaaliaikaisissa tietojoukoissa kursoripohjainen sivutus on vakaampi kuin offset-pohjainen sivutus. Välitä viimeksi nähty tunniste kursorina.
const next = await prisma.post.findMany({
take: 10,
cursor: { id: lastId },
skip: 1,
});N+1-kyselyiden välttäminen
Luettelon hakeminen ja sen jälkeen jokaisen kohteen hakeminen erikseen aiheuttaa N+1-ongelman. Prisma välttää sen: lataa relaatiot yhdellä optimoidulla kyselyllä käyttämällä yhtä include-määritettä erillisen silmukan sijaan.
Pikatarkistus
Testaa Prisma-relaatioita koskevat tietosi.
Kertaus
Opit tekemään relaatiokyselyitä Prismalla:
- Mallinna skeemassa yksi moneen - ja moneen moneen -relaatiot
- Hae relaatiot
include-määritteellä ja karsi kenttiäselect-määritteellä - Sisäkkäiset kirjoitukset luovat päätietueet ja alitietueet atomisesti
- Suodata relaatioiden perusteella, sivuta take/skip-määritteillä tai kursoreilla ja vältä N+1-ongelmaa
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
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Relaatiot ja edistyneet kyselyt Prismalla” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Next.js 15 -täyden pinon verkkosovellukset-oppimispolun 3 oppituntia, myös oppitunnin “Relaatiot ja edistyneet kyselyt Prismalla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Next.js 15 -täyden pinon verkkosovellukset-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Relaatiot ja edistyneet kyselyt Prismalla”?
Mallintakaa one-to-many- ja many-to-many-relaatioita ja tehkää niiden yli kyselyitä nested write-, include-, select-, suodatus- ja sivutustoiminnoilla. Harjoittelet Next.js 15 -täyden pinon verkkosovellukset-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Next.js 15 -täyden pinon verkkosovellukset-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Next.js 15 -täyden pinon verkkosovellukset-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Relaatiot ja edistyneet kyselyt Prismalla”-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ä Next.js 15 -täyden pinon verkkosovellukset-oppitunnilla?
Kyllä. Jokainen Next.js 15 -täyden pinon verkkosovellukset-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
- Johdanto Prisma ORM:ään
- Prisma-skeeman suunnittelu ja migraatiot
- CRUD-operaatiot Prisma Clientillä
- Relaatiot ja edistyneet kyselyt Prismalla