4.4.2 Schema 文件结构:generator/datasource/model
一句话破题
schema.prisma 是 Prisma 的核心配置文件——它定义了数据库连接、代码生成器和数据模型。
Schema 文件三大块
prisma
// 1. 生成器配置(Generator)
generator client {
provider = "prisma-client-js"
}
// 2. 数据源配置(Datasource)
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
// 3. 数据模型(Model)
model User {
id String @id @default(cuid())
email String @unique
name String?
posts Post[]
}Generator:生成器配置
prisma
generator client {
provider = "prisma-client-js" // 生成 JS/TS 客户端
previewFeatures = ["fullTextSearch"] // 启用预览功能
}| 选项 | 说明 |
|---|---|
provider | 生成器类型,通常是 prisma-client-js |
previewFeatures | 启用实验性功能 |
output | 输出路径(通常不需要修改) |
Datasource:数据源配置
prisma
datasource db {
provider = "postgresql" // 数据库类型
url = env("DATABASE_URL") // 从环境变量读取连接字符串
}支持的数据库:
| provider | 数据库 |
|---|---|
postgresql | PostgreSQL |
mysql | MySQL |
sqlite | SQLite |
sqlserver | SQL Server |
mongodb | MongoDB |
Model:数据模型
prisma
model User {
// 字段定义
id String @id @default(cuid())
email String @unique
name String?
role Role @default(USER)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// 关系定义
posts Post[]
profile Profile?
}
// 枚举
enum Role {
USER
ADMIN
}常用字段修饰符
| 修饰符 | 作用 | 示例 |
|---|---|---|
@id | 主键 | id String @id |
@unique | 唯一约束 | email String @unique |
@default() | 默认值 | @default(now()) |
@updatedAt | 自动更新时间 | updatedAt DateTime @updatedAt |
@relation | 定义关系 | @relation(fields: [userId], references: [id]) |
@map | 映射数据库字段名 | @map("user_id") |
@@index | 创建索引 | @@index([email]) |
@@unique | 复合唯一约束 | @@unique([userId, teamId]) |
字段类型速查
| Prisma 类型 | TypeScript 类型 | 说明 |
|---|---|---|
String | string | 字符串 |
Int | number | 整数 |
Float | number | 浮点数 |
Boolean | boolean | 布尔值 |
DateTime | Date | 日期时间 |
Json | JsonValue | JSON 数据 |
Decimal | Decimal | 精确小数 |
可选字段:类型后加 ?
prisma
name String? // 可以为 null数组字段:类型后加 []
prisma
tags String[] // 字符串数组本节小结
- schema.prisma 包含三部分:generator、datasource、model
- generator 配置代码生成,datasource 配置数据库连接
- model 定义数据结构和关系
- 使用修饰符(@id, @unique 等)定义约束
