Prisma入门
本文最后更新于:19 小时前
Prisma重点概念介绍、schema.prisma文件解读、Prisma使用方法
Prisma入门
一、概述
核心工具简介
- Prisma Schema,描述数据模型
- Prisma Client,操作API
prisma命令介绍
prisma generate:从 Prisma schema 读取 所有 上述信息以生成正确的数据源客户端代码(例如 Prisma Client)prisma migrate dev:读取数据源和数据模型定义以创建一个新的迁移。
二、.prisma文件解读
下面是一个schema.prisma文件示例
1 | |
model
映射到数据库的 表(关系型数据库,例如 PostgreSQL)或 集合 (MongoDB)
构成 Prisma Client API 中 查询 的基础
model命名格式规范:大驼峰
如果使用该命名规范,无法和数据库表名匹配时(有些数据库表不支持大驼峰,而是下划线或复数形式),可以使用
@@map()函数属性进行映射1
2
3
4
5model Comment {
// Fields
@@map("comments")
}model中 字段的命名规范格式:小驼峰
如果与数据库表中的字段名称不匹配,可以使用
@map()进行映射关联1
2
3
4
5model Post {
// Fields
content String? @map("post_content") # @map 修改字段名映射
}
字段类型
字段类型分两类:标量类型、模型类型。参考链接:字段标量类型 - Prisma 中文文档
- 标量类型(也称标量字段)
「datasource数据源连接器」 决定每个 Prisma 标量类型映射到的 「数据库原生类型」。
「generator生成器」 决定这些类型映射到 「目标编程语言中的什么类型」。
| 标量类型 | 对应MySQL | 备注 |
|---|---|---|
| String | varchar(191) | |
| Boolean | TINYINT(1) | |
| Int | INT | |
| BigInt | INT | |
| Float | DOUBLE | |
| Decimal | DECIMAL(65,30) | |
| DateTime | DATETIME(3) | Prisma Client 以 ISO 8601 格式字符串的形式返回所有 DateTime |
| Json | JSON | JSON 对象 |
| Bytes | LONGBLOB | |
| Unsupported | 允许您在 Prisma 模式中表示 Prisma Client 不支持的数据类型 | |
| enum | 枚举类型,注:SQL Server和SQLite不支持 |
- 模型类型(也称关系字段),一个关系字段的类型是另一个模型
类型修饰
类型修饰有 ? [] 两种语法,分别表示可选、数组
1 | |
属性描述
常用的属性描述如下表
| 属性 | 说明 | 示例 |
|---|---|---|
| @id | 数据库主键 | |
| @@id | 复合主键 | |
| @default() | 设置默认值 | @default(false) @default(autoincrement()),注意:MongoDB 连接器 不支持 autoincrement() |
| @unique | 字段唯一 | |
| @relation | 设置关联 | |
| @map() | 设置映射 | content String? @map("post_content") 指定表中映射的Key |
| @createdAt() | 创建时间 | |
| @updatadAt() | 更新时间 |
.prisma文件位置
Prisma CLI 在以下位置查找 Prisma schema 文件,顺序如下:
--schemaflag 指明的位置,当你调用introspect,generate,migrate和studio时可用:1
$prisma generate --schema=./alternative/schema.prismapackage.json文件指明的位置(2.7.0 及更高版本):1
2
3"prisma": {
"schema": "db/schema.prisma"
}默认位置:
./prisma/schema.prisma./schema.prisma
注:如果不显式指定
schema.prisma文件位置的话,Prisma CLI会自动到当前目录及当前目录的子目录中去寻找schema.prisma文件
三、如何使用
如何初始化模型
前置工作,安装依赖
1 | |
创建模型
1 | |
然后再schema.prisma文件进行配置定义,完成后执行
1 | |
然后就可以通过 Prisma Client 对数据库进行操作了
1 | |
如何更新模型
Schema.prisma数据模型发生变化之后,重新使用migrate命令同步到数据库
1 | |