Prisma 是最为流行的 ORM, 目前 Prisma 的模型已经开始支持多文件,这解决一个文件中写所有的问题。
Prisma 特性
- 🌴基于 TypeScript 类型安全,自动生成操作数据 API
- 🌴自创了 Prisma.schema PSL 文件,简洁明了(目前已经支持多文件)
- 🌴多数据库抽象支持,无需关注底层
- 🌴良好的 CLI 命令支持,自动化迁移(不是数据库之间)
- 🌴良好的文档和社区支持
primsa 使用示例
- 创建你的NestJS项目
npm install -g @nestjs/cli
nest new test-demo
- 安装Prisma
npm install prisma --save-dev
npm install @prisma/client
- 现在使用Prisma CLI的
init命令创建初始的Prisma设置
npx prisma init
此命令创建一个新的 prisma 目录,其内容如下:
schema.prisma:指定数据库连接并包含数据库schema.env:dotenv文件,通常用于将数据库凭据存储在一组环境变量中
连接数据库
- 修改
.env文件设置mysql连接,以下连接请根据你的情况修改
DATABASE_URL="mysql://root:root@localhost:3306/databasename"
#定义环境
NODE_ENV=development
如何将 Prisma Schema 拆分为多个文件
-
首先,确保
prisma和@prisma/client已至少更新至5.15.0。您还需要最新版本 (5.15.0) 的Prisma VSCode Extension,以便在 IDE 中利用这些更新。 -
要将 Prisma Schema 拆分为多个文件,首先
prismaSchemaFolder通过将其包含previewFeatures在generator. -
schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
previewFeatures = ["prismaSchemaFolder"]
}
-
然后,在您的目录下创建一个
schema子目录prisma。您可以将您的移动schema.prisma到此目录中。 -
您现在可以在
schema目录中创建其他文件!所有模型都可以在所有文件中引用,因此关系可以跨文件 -
user.prisma
model User {
id Int @id @default(autoincrement())
name String
posts Post[]
}
- post.prisma
model Post {
id Int @id @default(autoincrement())
title String
content String
authorId Int
author User @relation(fields: [authorId], references: [id])
}
- 要将数据模型映射到数据库模式(即创建相应的数据库表),你需要使用
prisma migrateCLI 命令
npx prisma migrate dev --name init
-
该命令做了两件事:
- 它为此迁移创建一个新的 SQL 迁移文件
- 它针对数据库运行 SQL 迁移文件
-
该命令执行动作为:
- 根据定义生成迁移文件
- 执行新的迁移文件修改数据表
- 生成 Prisma Client
-
执行上面代码数据库表自动生成