🌤 prisma
# prisma 是数据库处理工具
npm install prisma --save-dev
# @prisma/client 才是代码用的!
npm install @prisma/client
1
2
3
4
5
2
3
4
5
prisma generate
同步 Model 与 node_modules 中的代码模型
使用@prisma/client
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
1
2
2

tsconfig.json
{
"compilerOptions": {
"sourceMap": true,
"outDir": "dist",
"strict": true,
"lib": ["esnext"],
"esModuleInterop": true
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
连接数据库
npx prisma init
1
prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
.env
DATABASE_URL="mysql://root:sql123123@localhost:3306/prisma_demo?schema=public"
1
init
添加如下内容
model Post {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String @db.VarChar(255)
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
model Profile {
id Int @id @default(autoincrement())
bio String?
user User @relation(fields: [userId], references: [id])
userId Int @unique
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
profile Profile?
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
添加 index.ts
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
async function main() {
// ... you will write your Prisma Client queries here
// await prisma.user.create({
// data: {
// name: "Alice",
// email: "alice@prisma.io",
// posts: {
// create: { title: "Hello World" },
// },
// profile: {
// create: { bio: "I like turtles" },
// },
// },
// });
const allUsers = await prisma.user.findMany({
include: {
posts: true,
profile: true,
},
});
console.dir(allUsers, { depth: null });
}
main()
.catch((e) => {
throw e;
})
.finally(async () => {
await prisma.$disconnect();
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
include 告诉 Prisma Client ,在 返回的 User 时,包含 posts 和 profile 关系。
最后
npx prisma migrate dev --name init
1
之后会自动处理数据库
Migrate
迁移工具
- 调整模型
prisma migrate dev
--name ???
introspection
将 数据库中的表 映射到 Prisma models
npx prisma db pull
工作流程:
- 读取 url 连接
- 读取数据库
- 生成 model