技术文献

Prisma基础(克隆一个项目后开始)

2026-05-23

手把手实践入门Prisma - 面向Prisma初学者

https://www.bilibili.com/video/BV1UM4y1T7QF/?spm_id_from=333.337.search-card.all.click


一、新建一个目录prisma

二、克隆一个Prisma项目

git clone https://gitee.com/baasapi-admin/prisma-workshop.git

三、进入目录

四、安装依赖

npm install

五、在Schema.prisma文件下添加模型User

datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}

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

model User {
  id    Int     @id @default(autoincrement())
  name  String?
  email String  @unique
}
 

//@id是“主键(Primary Key)”

六、数据库迁移

npx prisma migrate dev --name init

解释:

1.创建数据库dev.db

2.创建数据表user

3.自动生成 Prisma Client

4.生成 migration 文件,里面类似:202605231601_init/ 

5.--name init  给这次迁移起名字,prisma/migrations/20260523xxxx_init/

 

 

七、在线打开数据库

npm prisma studio

八,运行script.ts文件

...
async function main() {
  // ... you will write your Prisma Client queries here
    const result= await prisma.user.findMany();
    console.log(result);
}
...

会出现卡死的情况。

原因:git clone的项目太老了,2021年的项目,现在是2026年,node.js是22版本,所以和原来的Prisma版本有冲突。

解决:安装Prisma6版本

1. 删除 node_modules

rd /s /q node_modules

2 .删除 package-lock.json

del package-lock.json

3.重新安装依赖

npm install

4.安装prisma6的版本,7版本改动有点大,和教程不匹配

npm install prisma@6 @prisma/client@6

5.执行代码生成器

npx prisma generate

6.运行代码

npm run dev

7.效果图

九、新增一条数据

//script.ts

...
async function main() {
  // ... you will write your Prisma Client queries here
    //const result= await prisma.user.findMany();
    const result=await prisma.user.create({
        data:{
            email:'victor@bassapi.com'
        }
    })
    console.log(result);
}
...

执行

npm run dev

十、更新数据

//script.ts

...
const result=await prisma.user.update({
       where:{
           email:'victor@bassapi.com'
       },
       data:{
           name:'victor'
       }
   })
   console.log(result);
...

十一、再添加一个Post模型

//scheme.prisma文件

datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}

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

model User {
  id    Int     @id @default(autoincrement())
  name  String?
  email String  @unique
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  authorId  Int?
  author    User?   @relation(fields: [authorId], references: [id])
}

※ 注意:posts Post[]

posts“关系字段(relation field)”,不是普通的数据库字段

※ 注意:author    User?   @relation(fields: [authorId], references: [id])

author“关系字段(relation field)”,不是普通的数据库字段

执行数据库变更

npx prisma migrate dev --name add-post

十二、添加一篇文章

...
const result=await prisma.post.create({
    data:{
        title:'Hello World'
    }
})
console.log(result);
...

终端运行

npm run dev