全栈开发

prisma基本使用

初始化

npx prisma init

修改配置文件

/prisma/shcema.prisma

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

添加.env环境变量

DATABASE_URL="mysql://backend_user:BackendUser@localhost:3306/backend_db"

添加测试模型

/prisma/shcema.prisma 添加如下模型信息

model Test {
  id Int @id @default(autoincrement())
  name String @db.VarChar(255)
  desc String?
  number Int
  isPublished Boolean
}

将模型推送到mysql

npx prisma db push

prisma studio

npx prisma studio

安装prisma客户端

npm install @prisma/client

使用prisma客户端

/src/lib/client.ts

import { PrismaClient } from '@prisma/client'

const globalForPrisma = globalThis as unknown as { prisma: PrismaClient }

export const prisma = globalForPrisma.prisma || new PrismaClient()

if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma

新版本安装

npm install prisma --save-dev

npx prisma init --datasource-provider sqlite --output ../generated/prisma

npm install dotenv

prisma.config.ts add import "dotenv/config";

npx prisma migrate dev

npm install @prisma/client

Pg数据库版

1、安装依赖

cd hello-world
npm install @prisma/client @prisma/adapter-pg pg dotenv tsx
npm install -D prisma @types/pg

2、初始化

npx prisma init --db

3、编辑配置文件prisma.config.ts

import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'

export default defineConfig({
  schema: 'prisma/schema.prisma',
  migrations: {
    path: 'prisma/migrations',
    seed: 'tsx ./prisma/seed.ts',
  },
  datasource: {
    url: env('DATABASE_URL'),
  },
})

4、添加ORM

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client"
  output   = "./generated"
}

datasource db {
  provider = "postgresql"
}

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
}

5、迁移表

npx prisma migrate dev --name init

6、创建prisma客户端

import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '../prisma/generated/client'

const prismaClientSingleton = () => {
  const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL! })
  return new PrismaClient({ adapter })
}

type PrismaClientSingleton = ReturnType<typeof prismaClientSingleton>

const globalForPrisma = globalThis as unknown as {
  prisma: PrismaClientSingleton | undefined
}

export const prisma = globalForPrisma.prisma ?? prismaClientSingleton()

if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma