0
点赞
收藏
分享

微信扫一扫

Prisma学习记录1

宁静的猫 2024-04-26 阅读 21

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.UnsignedInt
articles 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.填充的异步阻塞(没听懂,后期会补充)

举报

相关推荐

0 条评论