[{"data":1,"prerenderedAt":304},["ShallowReactive",2],{"content:\u002Fposts\u002F2023\u002Fprisma-setup":3,"surround:\u002Fposts\u002F2023\u002Fprisma-setup":292},{"id":4,"title":5,"body":6,"canonical":269,"categories":270,"date":272,"description":273,"draft":274,"extension":275,"image":276,"meta":277,"navigation":278,"path":279,"permalink":269,"readingTime":280,"recommend":269,"references":269,"seo":285,"sitemap":286,"stem":287,"tags":288,"type":269,"updated":272,"__hash__":291},"content\u002Fposts\u002F2023\u002Fprisma-setup.md","prisma 快速上手",{"type":7,"value":8,"toc":255},"minimark",[9,16,21,25,36,39,45,48,56,70,84,90,98,102,127,131,136,142,145,156,159,197,208,212,218,221,232,240,243,246,252],[10,11],"link-card",{"description":12,"icon":13,"link":14,"title":15},"prisma 官网","\u002Fimages\u002Fposts\u002Fprisma-logo.svg","https:\u002F\u002Fwww.prisma.io\u002F","Prisma",[17,18,20],"h2",{"id":19},"node-项目中引入-prisma-和初始化","node 项目中引入 prisma 和初始化",[22,23,24],"p",{},"创建一个 node 项目",[26,27,33],"pre",{"className":28,"code":30,"language":31,"meta":32},[29],"language-shell","mkdir prisma && cd prisma && pnpm init -y\n","shell","",[34,35,30],"code",{"__ignoreMap":32},[22,37,38],{},"引入 prisma",[26,40,43],{"className":41,"code":42,"language":31,"meta":32},[29],"pnpm i prisma -D\n",[34,44,42],{"__ignoreMap":32},[22,46,47],{},"初始化一个使用 sqlite 的 prisma",[26,49,54],{"className":50,"code":52,"language":53},[51],"language-text","npx prisma init --datasource-provider sqlite\n","text",[34,55,52],{"__ignoreMap":32},[22,57,58,59,62,63,66,67,69],{},"这时，你可以看到该项目中有一个 prisma 文件夹和一个",[34,60,61],{"code":61},".env","文件，prisma 文件夹里面包含了一个",[34,64,65],{"code":65},"schema.prisma","文件，",[34,68,61],{"code":61},"文件里则是数据库的配置",[71,72,73],"blockquote",{},[22,74,75,76,79,80,83],{},"如果你使用 vscode 作为开发工具的话可以下载",[34,77,78],{"code":78},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=Prisma.prisma","插件让",[34,81,82],{"code":82},".prisma","文件有高亮和格式化功能。",[22,85,86,87,89],{},"此时",[34,88,65],{"code":65},"文件里的内容包含如下:",[26,91,96],{"className":92,"code":94,"language":95,"meta":32},[93],"language-prisma","\u002F\u002F This is your Prisma schema file,\n\u002F\u002F learn more about it in the docs: https:\u002F\u002Fpris.ly\u002Fd\u002Fprisma-schema\n\ngenerator client {\n  provider = \"prisma-client-js\"\n}\n\ndatasource db {\n  provider = \"sqlite\"\n  url      = env(\"DATABASE_URL\")\n}\n","prisma",[34,97,94],{"__ignoreMap":32},[99,100,101],"h3",{"id":101},"知识点",[103,104,105,115,121],"ol",{},[106,107,108,111,112],"li",{},[34,109,110],{"code":110},"provider = \"sqlite\""," 标识当前使用的数据库是 ",[34,113,114],{"code":114},"sqlite",[106,116,117,120],{},[34,118,119],{"code":119},"provider = \"prisma-client-js\""," 标识当前项目是 js 项目",[106,122,123,126],{},[34,124,125],{"code":125},"url = env(\"DATABASE_URL\")"," 标识当前项目数据库文件地址",[17,128,130],{"id":129},"prisma-中的模型创建","prisma 中的模型创建",[71,132,133],{},[22,134,135],{},"以一个用户表来进行演示",[26,137,140],{"className":138,"code":139,"language":95,"meta":32},[93],"model User{\n  id        Int       @id @default(autoincrement())\n  name      String?\n  email     String    @unique\n  nickName  String    @default(\"\") @map(\"nick_name\")\n  createdAt DateTime  @default(now()) @map(\"created_at\")\n  updatedAt DateTime  @updatedAt @map(\"updated_at\")\n\n  @@map(\"users\")\n}\n",[34,141,139],{"__ignoreMap":32},[22,143,144],{},"上面这段代码表示：创建一个 User 模型，其中包含的字段有：",[103,146,147,150,153],{},[106,148,149],{},"一个 id ，整型自动递增",[106,151,152],{},"一个可选的 name",[106,154,155],{},"一个唯一值的 email",[99,157,101],{"id":158},"知识点-1",[103,160,161,167,173,179,185,191],{},[106,162,163,164],{},"prisma 中创建模型使用关键字",[34,165,166],{"code":166},"model",[106,168,169,170],{},"标识一个字段为 id 使用 ",[34,171,172],{"code":172},"@id",[106,174,175,176],{},"设置非必填字段使用 ",[34,177,178],{"code":178},"?",[106,180,181,182],{},"给该字段一个默认值使用 ",[34,183,184],{"code":184},"@default(\"\")",[106,186,187,188],{},"给字段名在数据库中重新命名使用 ",[34,189,190],{"code":190},"@map(\"\")",[106,192,193,194],{},"给一个模型在数据库中重新命名使用 ",[34,195,196],{"code":196},"@@map(\"\")",[71,198,199],{},[22,200,201],{},[202,203,204,205],"strong",{},"prisma 文件中所有引号需要使用双引号",[34,206,207],{"code":207},"\"\"",[17,209,211],{"id":210},"使用-prisma-studio-查看创建好的数据库","使用 prisma studio 查看创建好的数据库",[26,213,216],{"className":214,"code":215,"language":31,"meta":32},[29],"npx prisma studio\n",[34,217,215],{"__ignoreMap":32},[17,219,220],{"id":220},"数据库迁移",[22,222,223,224,227,228,231],{},"创建好表结构定义后，执行 ",[34,225,226],{"code":226},"npx prisma migrate dev"," 命令，会在 ",[34,229,230],{"code":230},"prisma\u002Fmigrations"," 目录下生成迁移文件，同时在数据库中创建表。",[26,233,238],{"className":234,"code":236,"language":237,"meta":32},[235],"language-bash","npx prisma migrate dev\n","bash",[34,239,236],{"__ignoreMap":32},[22,241,242],{},"此条命令动作为：根据定义生成迁移文件->执行新的迁移文件修改表 -> 生成 Prisma Client",[17,244,245],{"id":245},"重置数据库",[26,247,250],{"className":248,"code":249,"language":237,"meta":32},[235],"npx prisma migrate reset\n",[34,251,249],{"__ignoreMap":32},[22,253,254],{},"此条命令动作为：删除数据库->创建同名数据库->执行所有迁移文件->运行 seed 数据填充",{"title":32,"searchDepth":256,"depth":256,"links":257},4,[258,263,266,267,268],{"id":19,"depth":259,"text":20,"children":260},2,[261],{"id":101,"depth":262,"text":101},3,{"id":129,"depth":259,"text":130,"children":264},[265],{"id":158,"depth":262,"text":101},{"id":210,"depth":259,"text":211},{"id":220,"depth":259,"text":220},{"id":245,"depth":259,"text":245},null,[271],"代码","2023-01-02 23:08:07","prisma 是 nodejs 中著名的 orm 框架，这篇文章我们一起来了解一下 prisma 怎么结合 node 进行数据操作",false,"md","https:\u002F\u002Fbitmc.uno\u002Fpicgo\u002F67a224a43e3ff-78.webp",{},true,"\u002Fposts\u002F2023\u002Fprisma-setup",{"text":281,"minutes":282,"time":283,"words":284},"3 min read",2.6,156000,520,{"title":5,"description":273},{"loc":279},"posts\u002F2023\u002Fprisma-setup",[289,95,290],"node","orm","zZoMcZyTBjFb9f8i0T6AJiHqCjKTfOij_sSob8ugqX8",[293,299],{"title":294,"path":295,"stem":296,"date":297,"type":298,"children":-1},"心经","\u002Fposts\u002F2024\u002Fthe-heart-channel","posts\u002F2024\u002FThe-heart-channel","2024-12-18 10:43:19","story",{"title":300,"path":301,"stem":302,"date":303,"type":269,"children":-1},"rest client插件使用","\u002Fposts\u002F2023\u002Frest-client-plugin-use","posts\u002F2023\u002Frest-client-plugin-use","2023-01-03 20:13:52",1789642595472]