Prisma(5 分钟)快速入门
创建项目
- 创建一个文件夹 PrismaDemo
初始化项目
ts
npm init -y
npm install typescript tsx @types/node --save-dev
这个时候会创建一个package.json
文件.其中包括TS
初始设置
初始化 TS
ts
npx tsc --init
- 这样会在根目录生成一个
tsconfig.json
文件, 修改里面的代码
ts
{
"strict": true,
"jsx": "react-jsx",
"verbatimModuleSyntax": false, // 改成false
"isolatedModules": true,
"noUncheckedSideEffectImports": true,
"moduleDetection": "force",
"skipLibCheck": true,
}
安装 Prisma
ts
npm install prisma --save-dev
使用 Prisma CLI 的 init 命令设置 Prisma ORM
ts
npx prisma init --datasource-provider mysql --output ../generated/prisma
注意
--datasource-provider mysql
指定数据库类型--output ../generated/prisma
指定生成的文件位置
命令完成后,会生成文件夹,结构如下
bash
├── Prisma
│ ├── schema.prisma
├── .env
注意
schema.prisma
就是 Prisma 的数据模型文件.env
指定生成的环境文件
创建数据库
- 自己利用 mysql 创建一个数据库
修改.env 文件
ts
DATABASE_URL =
"mysql://数据库用户名:数据库密码@数据库地址没有https:数据库端口号/数据库名称";
一开始没有数据库(需要多一张表)
(1) 创建结构文件
ts
generator client {
provider = "prisma-client-js"
output = "../generated/prisma"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
(2) 推送到数据库 和 生成 Prisma 客户端
aaa 可以随意
因为你需要把你本机的 model 推送到数据库,所以必须会在数据库多一张表
ts
npx prisma migrate dev --name aaa
数据库里面也会多了一张表 名字叫做 _prisma_migrations
这个就是映射表
你的文件里面 migrations/aaa 文件夹里面会有一个 migration.sql 文件,这个文件就是推送到数据库的 SQL 文件
(3) 安装 Prisma 客户端
ts
npm install @prisma/client
(4) 生成 Prisma 客户端
ts
npx prisma generate
(5) 查询
ts
import { PrismaClient } from "../generated/prisma";
const prisma = new PrismaClient();
async function main() {
const users = await prisma.dept.findMany(); // user 换成你的表名
console.log(users);
}
main()
.catch((e) => {
throw e;
})
.finally(async () => {
await prisma.$disconnect();
});
有数据库(不需要多一张表)
(1) 已经通过 nacicat 创建好数据库
(2) 直接利用命令
ts
npx prisma db pull
这样会自动在schema.prisma
生成数据库模型
(3) 安装 Prisma 客户端
ts
npm install @prisma/client
(4) 生成 Prisma 客户端
ts
npx prisma generate
这样做 数据库表里面就不会多一个表.他不能改变表结构.只能改变表里面的数据
使用
查询
- 在
src
文件夹下创建一个index.ts
文件
ts
import { PrismaClient } from "../generated/prisma";
const prisma = new PrismaClient();
async function main() {
const user = await prisma.user.create({
data: {
name: "Alice",
email: "alice@prisma.io",
age: 28,
sex: "男",
},
});
console.log(user);
const users = await prisma.user.findMany(); // user 换成你的表名
console.log(users);
}
main()
.catch((e) => {
throw e;
})
.finally(async () => {
await prisma.$disconnect();
});
增加一个命令
- package.json 下面
ts
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "tsx src/index.ts"
},
- 运行
ts
npm run dev