# Prisma
# 介绍
Prisma 是一个开源的下一代 ORM。它由以下部分组成:
- Prisma Client:用于 Node.js 和 TypeScript 的自动生成和类型安全的查询构建器
- Prisma Migrate:迁移工具,可轻松将您的数据库模式从原型设计发展到生产环境
- Prisma Studio:用于查看和编辑数据库中数据的 GUI
# 基本使用
# 连接数据库
创建一个名为prisma的文件夹,在内部创建一个schema.prisma
文件
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
这里的url是从环境变量中读取的,所以新建一个.env
的文件
示例
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"
这个结构为
postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA
- USER: 数据库用户
- PASSWORD: 数据库密码
- HOST: 主机地址
- PORT: 端口 一般为 5432
- DATABASE: 数据库名称
- SCHEMA: schema名称,默认为public
- 在schema中定义你的数据库类型、路径以及你的数据库表结构,示例如下
# Using Prisma Migrate
在prisma/schema.prisma
中添加数据模型,示例:
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?
}
然后执行:
npx prisma migrate dev --name init
这个命令会做两件事情:
- 生成一个新的sql migration文件
- 执行这个migration文件并应用到数据库
# 安装 Prisma Client
为了使用prisma client,需要安装@prisma/client
npm install @prisma/client
这个安装命令会调用prisma generate
。
任何时候,如果进行了prisma schema的修改,必须手动的执行 prisma generate 命令,以保证模型和数据库一致
# 查询数据
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
// ... you will write your Prisma Client queries here
}
main()
.catch((e) => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
# 参考
- 官网