# 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
  1. 在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()
  })

prisma-001 prisma-002

# 参考

  1. 官网
陕ICP备20004732号-3