了解Prisma

发布时间 2023-04-10 18:22:03作者: zcookies

Prisma下一代 ORM


  • 官网:https://www.prisma.io/

  • 组成

    • Prisma Client 用于 Node.js 和 TypeScript 的自动生成和类型安全的查询构建器

    • Prisma 迁移:迁移系统

    • Prisma Studio :GUI工具、用于查看和编辑数据库中的数据。

  • Pirsma CLI

    #生成 prisma 的客户端即 Prisma Client
    npx prisma generate
    
    #数据库推送 如根据模型创建数据库表结构
    npx prisma db push
    
    #启动Studio,生成浏览器选项卡
    npx prisma studio
    

更多语法:Prisma CLI Command Reference

使用Node.js 调测

// prisma/schema.prisma 文件,创建模型文件
datasource db {
 provider = "mysql"
 url = "mysql://username:password@hostname:port/db"
 // relationMode = "prisma" //是否是prisma模式,是则不创建外键,这里创建外键
} 
generator client {
 provider = "prisma-client-js"
} 
model Role {
 id Int @id @default(autoincrement()) //主键,自增长 默认 int 11
 code String @unique @db.VarChar(32) //code 标识 32位
 label String @db.VarChar(32) //varchar 32
 isPublish Boolean @default(true) //默认 true
 User User[] //关系 
@@map("user_role") //表名
} 
model User {
 id Int @id @default(autoincrement())
 account String @unique @db.VarChar(32) //账户
 password String @db.VarChar(32) //密码
 roleId Int @map("role_id") //权限id
 isPublish Boolean @default(true) @map("is_publish")
 createAt DateTime @default(now()) @map("create_at") //创建时间
 updateAt DateTime @updatedAt() @map("update_at") //更新时间
 role Role @relation(fields: [roleId], references: [id]) //约束关系
 @@map("sys_user")
}

#创建、更新数据库
npx prisma db push

# 生成prisma client
npx prisma generate
import { PrismaClient } from '@prisma/client';

 async getUser() {
    const prisma = new PrismaClient();
    await prisma.role.create({
      data: {
        id: 1,
        code: 'admin',
        label: '管理员',
      },
    });

    await prisma.user.create({
      data: {
        account: 'zcookeis',
        password: 'zcookies',
        roleId: 1,
      },
    });
    return await prisma.user.findMany();
  }

  • 接口请求

  • npx prisma studio