Prisma
Prisma 是 TypeScript 的 ORM,允許您在 schema.prisma
文件中定義數據庫架構和模型,然後生成可用於從後端與數據庫交互的類型安全客戶端。
請查看 什麽是 Prisma?,更好地了解 Next.js 是什麽及其工作原理。
Prisma 架構
每個使用 Prisma ORM 工具包中的工具的項目都以 Prisma schema file 開始。Prisma 架構允許開發人員以直觀的數據建模語言定義其應用程序模型。 它還包含與數據庫的連接並定義一個 生成器
:
關系型數據庫
datasource db { provider = "postgresql" url = env("DATABASE_URL")}
generator client { provider = "prisma-client-js"}
model Post { id Int @id @default(autoincrement()) title String content String? published Boolean @default(false) author User? @relation(fields: [authorId], references: [id]) authorId Int?}
model User { id Int @id @default(autoincrement()) email String @unique name String? posts Post[]}
MongoDB
datasource db { provider = "mongodb" url = env("DATABASE_URL")}
generator client { provider = "prisma-client-js"}
model Post { id String @id @default(auto()) @map("_id") @db.ObjectId title String content String? published Boolean @default(false) author User? @relation(fields: [authorId], references: [id]) authorId String @db.ObjectId}
model User { id String @id @default(auto()) @map("_id") @db.ObjectId email String @unique name String? posts Post[]}
主要特性
- Prisma Client: 適用於 Node.js 和 TypeScript 的自動生成且類型安全的查詢構造器
- Prisma Migrate: 遷移系統
- Prisma Studio: 用於查看和編輯數據庫中的數據的 GUI
實用資源
- Prisma Docs 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://authjs.dev/reference/adapter/prisma