Next.js 15 fullstack (App Router + Server Actions) · leksjon

Fylling av database og tilkoblingspooling

Fyll databasen med pålitelige startdata og konfigurer Prisma-tilkoblingspooling, slik at Next.js-appen forblir rask og stabil under belastning.

Leksjon 4 av 413 trinn

Fylling av database og tilkoblingspooling er en gratis leksjon i Next.js 15 fullstack (App Router + Server Actions) 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 fullstack (App Router + Server Actions), og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Next.js 15 fullstack (App Router + Server Actions) inneholder totalt 4 leksjoner.

Hvorfor fylle en database med startdata?

Startdatainnlegging fyller databasen med forutsigbare startdata: administratorbrukere, demoregistre og oppslagstabeller. Det gjør at alle utviklere og alle CI-kjøringer kan starte fra den samme kjente tilstanden.

Uten startdata gjør manuell registrering testene ustabile og oppstarten tidkrevende.

Prisma-skriptet for startdata

Prisma kjører en seed-fil som De angir. Opprett prisma/seed.ts og registrer den i package.json under nøkkelen prisma.seed, slik at prisma db seed vet hva som skal kjøres.

{
  "prisma": {
    "seed": "ts-node prisma/seed.ts"
  }
}

Skrive logikk for startdata

Opprett klienten og registrer data inne i seed-filen. Pakk dette inn i en async-funksjon, og koble fra når arbeidet er ferdig.

import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();

async function main() {
  await prisma.user.create({
    data: { email: 'admin@app.com', name: 'Admin' }
  });
}

main().finally(() => prisma.$disconnect());

Idempotente startdata med upsert

Hvis De kjører startskriptet to ganger, skal det ikke opprettes duplikater. Bruk upsert, slik at en post opprettes hvis den mangler, og oppdateres hvis den allerede finnes.

await prisma.user.upsert({
  where: { email: 'admin@app.com' },
  update: {},
  create: { email: 'admin@app.com', name: 'Admin' }
});

Masseinnsetting av startdata

Bruk createMany for å sette inn mange rader effektivt. Alternativet skipDuplicates unngår feil ved konflikter med unike verdier.

await prisma.tag.createMany({
  data: [
    { name: 'news' },
    { name: 'sports' },
    { name: 'tech' }
  ],
  skipDuplicates: true
});

Kjøre startskriptet

Start skriptet fra CLI-et. Prisma kjører det også automatisk etter prisma migrate reset, slik at De får en ren database med startdata på nytt.

npx prisma db seed

Tilkoblingsproblemet i serverløse miljøer

Next.js på Vercel kjører serverløse funksjoner. Hver kjøring kan åpne en ny databasetilkobling, og under belastning bruker De raskt opp grensen for antall databasetilkoblinger.

Tilkoblingspooling løser dette ved å gjenbruke et fast sett med tilkoblinger.

Gjenbruke Prisma-klienten

Ved utvikling kan hot reload opprette mange klienter. Lagre én instans på globalThis, slik at det bare finnes én klient per prosess.

import { PrismaClient } from '@prisma/client';
const g = globalThis as unknown as { prisma?: PrismaClient };
export const prisma = g.prisma ?? new PrismaClient();
if (process.env.NODE_ENV !== 'production') g.prisma = prisma;

Pooling med en tilkoblings-URL

Bruk en pooler, for eksempel PgBouncer eller Prisma Accelerate. Pek DATABASE_URL mot pooler-endepunktet, og legg til ?pgbouncer=true slik at Prisma deaktiverer prepared statements som PgBouncer ikke kan dele.

DATABASE_URL="postgresql://user:pass@host:6543/db?pgbouncer=true&connection_limit=1"

Direkte URL for migreringer

Pool-tilkoblinger kan ikke kjøre migreringer. Legg til en directUrl i schemaet som omgår pooleren, slik at prisma migrate fungerer.

datasource db {
  provider  = "postgresql"
  url       = env("DATABASE_URL")
  directUrl = env("DIRECT_URL")
}

Beste praksis

Hold datalaget sunt:

  • Gjør startdata idempotente med upsert
  • Gjenbruk én klientinstans
  • Bruk en pooler i serverløse miljøer
  • Bruk en separat direkte URL for migreringer

Kjapp kontroll

Test det De har lært om pooling.

Oppsummering

De har lært å fylle databasen med startdata og bruke pooling:

  • Konfigurer prisma.seed og skriv idempotente startdata med upsert
  • Sett inn mange rader med createMany
  • Gjenbruk én Prisma-klient for å unngå lekkasjer
  • Bruk en pool-basert DATABASE_URL samt en directUrl for migreringer

Nå starter databasen i en kjent tilstand og kan skaleres trygt.

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
22
Leksjoner
88

Ofte stilte spørsmål

Er leksjonen «Fylling av database og tilkoblingspooling» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Next.js 15 fullstack (App Router + Server Actions), inkludert «Fylling av database og tilkoblingspooling», 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 fullstack (App Router + Server Actions) inneholder totalt 4 leksjoner.

Hva lærer jeg i «Fylling av database og tilkoblingspooling»?

Fyll databasen med pålitelige startdata og konfigurer Prisma-tilkoblingspooling, slik at Next.js-appen forblir rask og stabil under belastning. Du øver på Next.js 15 fullstack (App Router + Server Actions) 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 fullstack (App Router + Server Actions)?

Ingen tidligere erfaring er nødvendig. Next.js 15 fullstack (App Router + Server Actions) 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 «Fylling av database og tilkoblingspooling»?

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 fullstack (App Router + Server Actions)-leksjonen?

Ja. Alle Next.js 15 fullstack (App Router + Server Actions)-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. Sette opp Prisma ORM
  2. CRUD med Server Actions
  3. Migreringer av databaseskjema
  4. Fylling av database og tilkoblingspooling
← Tilbake til Next.js 15 fullstack (App Router + Server Actions)