Prisma1.0简介
prisma代替的传统的ORM,简化了数据库工作流程,有以下三个特性
- Access: 使用自带生成的Prisma客户端能进行类型安全的数据库访问,支持语言:Javascript typescript go;支持数据库:MySQL, PostgreSQL, MongoDB
- Migrate:数据库可以迁移
- Manage: 可利用Prisma Admin进行可视化管理
作用 - 构建graphqls 服务器 完全支持Apollo 生态体系
- 能构建rest gRPC风格api
- 非常灵活的api,用于处理关系数据和事务
prisma的一些重要概念
datamodal
定义和特性
datamodel 是数据模型,会根据这个生成数据表,并且也是prisma clinet api的基础,对于数据模型定义的每个模型。都会为该模型生成Prisma客户端操作,包括:
- 读取一条线记录
- 读取多条记录
- 写入记录
- 更新记录
- 删除记录
- 判断记录是否存在
- 在模型的任何记录上执行写操作时,接收实时更新
语法
datamodal使用的是Graphql SDL语法,在deploy.yml中定义路径
下面是例子:
type User {
id: ID! @id
username: String! @unique
email: String! @unique
password: String!
createdAt: DateTime! @createdAt
updatedAt: DateTime! @updatedAt
role: Role! @relation(link: INLINE)
posts: [Post!]!
}
type Post {
id: ID! @id
title: String!
content: String
public: Boolean! @default(value: false)
createdAt: DateTime! @createdAt
updatedAt: DateTime! @updatedAt
author: User @relation(link: INLINE)
type: Type!
}
type Role {
id: ID! @id
name: String! @unique
createAt: DateTime! @createdAt
updateAt: DateTime! @updatedAt
users: [User!]!
}
type Type {
id: ID! @id
name: String! @unique
createAt: DateTime! @createdAt
updateAt: DateTime! @updatedAt
posts: [Post]
}
prisma server
prisma server:位于数据库顶部的独立基础结构组件
prisma client
prisma client是自动生成的库,它允许连接到prisma server ,允许读写数据库,和访问数据
Prisma1.0 实践
起步
- 安装graphql cli
yarn global add prisma
- 依赖docker 安装docker
- prisma init 初始化项目
prisma init 项目名称
根据提示选择,可以选择已经存在的数据或者新建数据库,也可以选择生成的client客户端类型
会生成文件目录如下
-generated / prisma-client 这里面是prisma的客户端,是根据datamodal自动生成的prisma 的一些interface
-datamodel.prisma
-docker-compose.yml
-prisma.yml
4.进入项目根目录 构建docker镜像
docker compose up --build -d
如果选择的是新建数据库,这里会起包括一个数据库容器和一个prism server
如下:
5. prisma deploy 部署datamodel
6. 浏览器输入 localhost:4466 会看到graphql playground
7. 浏览器输入 localhost:4466/_admin 会看到Prisma Admin管理界面(也可执行命令prism admin打开)