Skip to content

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