本文主要是介绍Prisma学习记录1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
0.搭建prisma项目
1.配置env
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"注解:"数据库://用户名:密码@地址:端口号/要连接的数据库"
例:DATABASE_URL="mysql://root:123456@localhost:3306/prismatest2"
2.建表
generator client {provider = "prisma-client-js"
}datasource db {provider = "mysql" //这里改自己的数据库url = env("DATABASE_URL")
}model user{ //建一个user表id Int @id @default(autoincrement()) @db.UnsignedInt //主键 自增 非负name String //不可为空avatar String? //可以为空createdAt DataTime @default(now()) //日期字段,默认当前日期updatedAt DateTime @updatedAd //同上content String @db.Text //文本
}
3.运行并生成迁移文件
npx prisma migrate dev
Enter a name for the new migration: (写不写都行)
3.5.创建多表关联模型
model user {id Int @id @default(autoincrement()) @db.UnsignedIntarticles article[]
}model article {user user? @relation(fields: [userId], references: [id])userId Int? @db.UnsignedInt
}
如果关联表里没自动补全代码,终端执行下面的代码
npx prisma format
4.数据填充
package.json配置
"prisma":{"seed": "ts-node prisma/seed.ts"},
prisma同级目录下创建seed.ts
seed.ts
import { PrismaClient } from "@prisma/client"const prisma = new PrismaClient();async function run(){await prisma.user.create({data:{email:"afafa"password:"fafaf"}})
}
run();
5.使用mock.js进行数据填充
import { PrismaClient } from "@prisma/client"
import { Random } from "mockjs"const prisma = new PrismaClient();async function run(){await prisma.user.create({data:{email: Random.string()password: Random.string()}})
}
run();
填充数据输入
npx prisma migrate reset
6.循环创建多个
import { PrismaClient } from "@prisma/client"
import { Random } from "mockjs"const prisma = new PrismaClient();async function run(){for(let i = 0li<29;i++){await prisma.user.create({data:{email: Random.string()password: Random.string()}})}
}
run();
7.通过helper帮助函数简化操作
可以单独创建一个seeds文件夹,里面就放创建表数据的ts文件
seeds
article.ts
user.ts
seed.ts
然后seed.ts里面写
import { article } from "./seeds/article"
import { user } from "./seeds/user"async function run(){user();article();
}
run()
helper
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();export async function create( count: 1 , callback: (prisma: PrismaClient) => void){for(let i = 0;i < count;i++){callback(prisma)}
}
其他函数调用
import { PrismaClient } from "@prisma/client"
import { Random } from "mockjs"
import { create } from "../helper"const prisma = new PrismaClient();async function run(){create(30 , async (prisma: PrismaClient)=>{await prisma.user.create({data:{email: Random.string()password: Random.string()}})})
}
run();
8.填充的异步阻塞(没听懂,后期会补充)
这篇关于Prisma学习记录1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!