Prisma
Prisma er en ORM (Object Relational Mapper) for TypeScript, som gir deg muligheten til ĂĄ definere databasens skjema og modeller i en schema.prisma-fil. Deretter genereres en typesikker klient som kan brukes til ĂĄ kommunisere med databasen din fra backend. Dette gir en enklere og mer sikker mĂĄte ĂĄ utvikle databaserelaterte applikasjoner med TypeScript pĂĄ.
Prisma Client
Prisma-klienten blir instansiert i /server/db.ts
og eksporteres som en global variabel. Som anbefalt av Prisma-teamet som beste praksis↗. Vi angir, som standard, Prisma-klienten i context. Vi anbefaler å bruke klienten via konteksten i stedet for å importere klienten i hver fil.
Skjema
Prisma-skjemafilen finner du i /prisma/schema.prisma
. I denne filen definerer du databasens skjema og modeller. Denne filen brukes til ĂĄ generere Prisma-klienten.
Med NextAuth.js
Hvis du velger ĂĄ bruke NextAuth.js sammen med Prisma, vil skjemafilen bli generert for deg og satt opp med de anbefalte verdiene for modellene User
, Session
, Account
og VerificationToken
i henhold til NextAuth. js-dokumentasjonen↗.
Standard Database
Standarddatabasen er en SQLite-database, som er meget godt egnet for utvikling og rask oppretting av et proof-of-concept. Imidlertid anbefaler vi ikke å bruke SQLite i produksjonsmiljøer. Du kan endre databasen ved å endre provider
i datasource
-blokken til postgresql
eller mysql
og deretter justere URL for database i miljøvariablene slik at den peker på databasen din.
Fyll Databasen (“Seeding”)
“Seeding”↗ er en god måte å fylle databasen med testdata. For å konfigurere fyllingen må du lage en seed.ts
-fil i /prisma
-katalogen og deretter legge inn et seed
-skript i package.json
-filen. Du trenger også en TypeScript runner som kan kjøre startskriptet. Vi anbefaler tsx↗ som er en meget effektiv TypeScript-runner som bruker esbuild og ikke trenger noen ESM-konfigurasjon. ts-node
eller andre runners vil ogsĂĄ fungere.
{
"scripts": {
"db-seed": "NODE_ENV=development prisma db seed"
},
"prisma": {
"seed": "tsx prisma/seed.ts"
}
}
import { db } from "../src/server/db/client";
async function main() {
const id = "cl9ebqhxk00003b600tymydho";
await db.example.upsert({
where: {
id,
},
create: {
id,
},
update: {},
});
}
main()
.then(async () => {
await db.$disconnect();
})
.catch(async (e) => {
console.error(e);
await db.$disconnect();
process.exit(1);
});
Deretter kan du kjøre pnpm db-seed
(eller npm
/yarn
) for ĂĄ fylle inn databasen.
Nyttige Ressurser
Ressurser | Link |
---|---|
Prisma Dokumentasjon | https://www.prisma.io/docs/↗ |
Prisma GitHub | https://github.com/prisma/prisma↗ |
Prisma Migrate Playground | https://playground.prisma.io/guides↗ |
NextAuth.JS Prisma Adapter | https://next-auth.js.org/adapters/prisma↗ |
PlanetScale Tilkoblingsveiledning | https://www.prisma.io/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-planetscale↗ |