更适合中国宝宝的入门级Prisma教程


写在前面:不知道大家在写后端/全栈项目(作者主前端)的时候,有没有因为需要写数据库的相关代码感觉很头疼。其实不是不会写相关的代码,而是觉得很长、可读性差、很麻烦。因此我急迫需要一个好用的工具来让我在我的练习项目中简化我与数据库交互的过程。

本文是在Next的项目中使用的示例,也就是说比较适合有一定基础的前端或者是Node伙伴来学习,当然我认为后端的小伙伴看完之后也会领略Prisma带给我们的便利,好了,话不多说,我们现在开始!

Prisma是干什么的

Prisma是一个现代化的数据库工具,用于简化与数据库交互。它提供了一个类型安全的ORM(对象关系映射),允许开发者通过类型化的方式定义数据库模型,并生成与数据库通信的代码,从而使数据库操作更加高效和可靠。

Prisma的使用场景

  • 当你需要构建一个需要与数据库频繁交互的现代Web应用时,Prisma提供了高效的数据库查询和管理工具。

  • 如果你希望在数据库查询中获得类型安全,避免因拼写错误或类型错误导致的运行时错误,Prisma提供了强大的类型生成功能。

说的好理解一点,他就是你项目独一无二的伪数据库(实则不是这样的,但是方便理解)

Prisma的优势

  1. 类型安全:使用TypeScript的类型定义,Prisma可以提供类型安全的数据库操作,减少运行时错误并提高开发效率。

  2. 自动化生成代码:基于 schema.prisma 文件自动生成 Prisma 客户端,使得数据库操作更加简洁和直观。

  3. 直观的数据库迁移:Prisma的迁移工具允许你轻松地管理数据库schema的变更,并确保数据库和代码的同步。

  4. 简洁的查询语法:使用Prisma的查询API,可以用简洁的代码进行复杂的数据库查询和操作。

  5. 高性能:Prisma生成的查询是高度优化的,能够有效地处理大型和复杂的数据库操作。

Prisma的使用(这才是重点!)

在使用之前推荐下载Vscode中的官方插件Prisma,插件会在特定的文件中提供代码高亮以及相关提示词

请添加图片描述

以下的使用均基于Nextjs,但是我希望大伙知道,这东西和前后端很多流行框架都是无缝结合的

安装CLI

官方推荐在本地中安装Prisma,避免全局安装时可能发生的版本冲突

pnpm install prisma --save-dev

初始化项目

pnpm dlx prisma init

我们初始化后,Prisma会自动创建一个基础的.env/prisma/schema.prisma

  1. .env

环境变量,不多bb

  1. /prisma/schema.prisma

我们所谓的内容基本都写在这里面

配置环境

这里我为了方便使用的是Neon的云数据库,实际使用本地数据库的话,将这个连接信息更换即可

请添加图片描述

开始创作

配置代码生成和数据库连接

这里要说的是我们在初始化Prisma后,在/prisma/schema.prisma下生成的内容:

请添加图片描述

  1. datasource db:配置块用于定义Prisma应该连接到哪个数据库
    • provider:指定数据库的类型(五大数据库类型都可以)
    • url:确保与.env中的名头一致
  2. generator client:定义Prisma生成什么样的客户端代码(后面细说)

模型编写

Prisma使用特定的语言来描述数据模型和数据库结构,换种简单的方式理解,我更愿称它为SQL伪代码

先来一个小Model:

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

翻译成SQL为:

CREATE TABLE User (
  id SERIAL PRIMARY KEY,
  email VARCHAR(255) UNIQUE NOT NULL,
  name VARCHAR(255)
)

我们简单聊一下几个常见注解(不想看的可以直接跳过):

  1. @id:定义主键
  2. @unique: 添加唯一约束
  3. @relation: 通常用于多对一或一对多的关系
  4. @default(): 设置默认字段
    • @default(uuid()): 默认值为随机生成的uuid
    • @default(now()): 默认值为当前时间戳
    • @default(autoincrement()): 默认值为自增的数字

导出使用

pnpm prisma generate

我们执行上述命令后,控制台会像下面这样:

请添加图片描述

生成的Prisma客户端代码会放在 node_modules/@prisma/client 目录下,你可以在代码中导入并且更加方便的对我们的数据库进行相关的CRUD操作

如何使用Prisma进行CRUD操作呢?请待下期分晓hhh

更新数据库

无论你使用的是本地还是云端的数据库,你一定不希望在你一顿操作猛如虎后,数据没有被你成功“操作”。

当然不要傻乎乎的觉得我们前面已经配置好环境了,我们写的每一行代码都会无差别的在数据库中更新,我们需要人为去强行将本地或是云端的数据库与我们项目中的Prisma schema进行同步。

pnpm prisma db push

如果上面你成功配置好环境并且正确的在Prisma中将其与你的数据库连接后,那么恭喜你,你可以在数据库中看到自己定义的内容了qwq

附上

Prisma的官网网站(英文)

Prisma的官方网站(中文)

中文的给人的感觉就是机翻,很水,建议有能力的小伙伴看英文的网站,非常全面!

后续我会继续更新Prisma的知识,如果你觉得这篇文章对你有帮助,希望你可以留下一个免费的赞做为对我的鼓励,谢谢各位帅哥美女!

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tabzzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值