Next.js 15 for fullstack-webapper · leksjon

Relasjoner og avanserte spørringer med Prisma

Modeller én-til-mange- og mange-til-mange-relasjoner, og spør deretter på tvers av dem med nestede writes, include, select, filtrering og paginering.

Leksjon 4 av 413 trinn

Relasjoner og avanserte spørringer med Prisma er en gratis leksjon i Next.js 15 for fullstack-webapper på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Next.js 15 for fullstack-webapper, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Next.js 15 for fullstack-webapper inneholder totalt 4 leksjoner.

Hvorfor relasjoner?

Virkelige data henger sammen: en bruker har mange innlegg, og et innlegg har mange tagger. Prisma modellerer disse relasjonene i skjemaet, slik at De kan navigere mellom dem i typesikre spørringer.

En-til-mange i skjemaet

En en-til-mange-relasjon kobler en overordnet post til mange underordnede poster via en fremmednøkkel. Definer begge sider i skjemaet.

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])
}

Mange-til-mange

Prisma støtter implisitt mange-til-mange med bare array-felt på begge sider. Prisma administrerer koblingstabellen for Dem.

model Post { id Int @id @default(autoincrement()) tags Tag[] }
model Tag  { id Int @id @default(autoincrement()) posts Post[] }

Inkludere relaterte data

Som standard returnerer spørringer bare modellfeltene. Bruk include for også å hente relaterte poster.

const user = await prisma.user.findUnique({
  where: { id: 1 },
  include: { posts: true },
});

Velge bestemte felt

Bruk select for bare å hente kolonnene De trenger — mindre datamengder og raskere spørringer. De kan legge inn select for relasjoner.

const posts = await prisma.post.findMany({
  select: { id: true, title: true, author: { select: { name: true } } },
});

Nestede skrivinger

Opprett en overordnet post og de underordnede postene i ett kall med en nestet create. Prisma kjører dette i en transaksjon.

await prisma.user.create({
  data: {
    name: 'Ada',
    posts: { create: [{ title: 'Hello' }, { title: 'World' }] },
  },
});

Filtrere med where

Bygg avanserte filtre med operatorer som contains, gt og in, og kombiner dem med AND/OR.

const recent = await prisma.post.findMany({
  where: {
    published: true,
    title: { contains: 'Prisma' },
  },
});

Filtrere på relasjoner

De kan filtrere en overordnet post basert på en betingelse for de underordnede postene ved hjelp av some, every eller none.

const authors = await prisma.user.findMany({
  where: { posts: { some: { published: true } } },
});

Sortering og paginering

Sorter resultater med orderBy, og paginer med take/skip (offset) for klassisk paginering.

const page = await prisma.post.findMany({
  orderBy: { createdAt: 'desc' },
  take: 10,
  skip: 20,
});

Markørbasert paginering

For store eller levende datasett er markørbasert paginering mer stabil enn offset. Send den sist viste id-en som markør.

const next = await prisma.post.findMany({
  take: 10,
  cursor: { id: lastId },
  skip: 1,
});

Unngå N+1-spørringer

Hvis De henter en liste og deretter spør etter hvert element separat, oppstår N+1-problemet. Prisma unngår dette: Bruk én include for å laste inn relasjoner i én optimalisert spørring i stedet for å iterere i en løkke.

Hurtigsjekk

Test kunnskapene Deres om Prisma-relasjoner.

Oppsummering

De har lært relasjonelle spørringer med Prisma:

  • Modeller en-til-mange- og mange-til-mange-relasjoner i skjemaet
  • Hent relasjoner med include; begrens felt med select
  • Nestede skrivinger oppretter overordnede og underordnede poster atomisk
  • Filtrer på relasjoner, paginer med take/skip eller markører, og unngå N+1-problemet
Gratis å komme i gang

Lær deg TypeScript med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Relasjoner og avanserte spørringer med Prisma» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Next.js 15 for fullstack-webapper, inkludert «Relasjoner og avanserte spørringer med Prisma», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Next.js 15 for fullstack-webapper inneholder totalt 4 leksjoner.

Hva lærer jeg i «Relasjoner og avanserte spørringer med Prisma»?

Modeller én-til-mange- og mange-til-mange-relasjoner, og spør deretter på tvers av dem med nestede writes, include, select, filtrering og paginering. Du øver på Next.js 15 for fullstack-webapper med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Next.js 15 for fullstack-webapper?

Ingen tidligere erfaring er nødvendig. Next.js 15 for fullstack-webapper på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Relasjoner og avanserte spørringer med Prisma»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Next.js 15 for fullstack-webapper-leksjonen?

Ja. Alle Next.js 15 for fullstack-webapper-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Introduksjon til Prisma ORM
  2. Utforming av Prisma-skjemaer og migreringer
  3. CRUD-operasjoner med Prisma Client
  4. Relasjoner og avanserte spørringer med Prisma
← Tilbake til Next.js 15 for fullstack-webapper