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.
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 medselect - Nestede skrivinger oppretter overordnede og underordnede poster atomisk
- Filtrer på relasjoner, paginer med take/skip eller markører, og unngå N+1-problemet
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
- Introduksjon til Prisma ORM
- Utforming av Prisma-skjemaer og migreringer
- CRUD-operasjoner med Prisma Client
- Relasjoner og avanserte spørringer med Prisma