Prisma入门
本文最后更新于:7 个月前
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 文件,顺序如下:
--schema
flag 指明的位置,当你调用introspect
,generate
,migrate
和studio
时可用:1
$prisma generate --schema=./alternative/schema.prisma
package.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 |
|