Next.js 15 -täyden pinon verkkosovellukset · Oppitunti

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.

Oppitunti 4/413 vaihetta

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
Aloita maksutta

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

  1. Johdanto Prisma ORM:ään
  2. Prisma-skeeman suunnittelu ja migraatiot
  3. CRUD-operaatiot Prisma Clientillä
  4. Relaatiot ja edistyneet kyselyt Prismalla
← Takaisin: Next.js 15 -täyden pinon verkkosovellukset