基于Koa+TS开发后端接口(三)ORM

1 引言

关键词:TypeScript Node Koa API ORM Database

任何系统都离不开数据库进行数据存储,基于前面的文章,我们在此基础上加入数据库连接和ORM,以提供接口访问数据库进行增删改查的功能。

前提:阅读本文章之前,我们假设

  1. 你已经对TypeScript、Yarn(或者Npm)、NodeJS、ORM等基本概念有一定的了解。
  2. 你已经阅读了上一篇文章:《基于 Koa + TS 开发后端服务接口(二)添加路由》

2 系列文章

  • 基于 Koa + TS 开发后端接口(一)新建项目
  • 基于 Koa + TS 开发后端接口(二)添加路由
  • 基于 Koa + TS 开发后端接口(三)ORM

3 安装扩展和依赖

VSCode安装扩展Prisma,提供高亮显示prisma文件(这里我们选择Prisma作为ORM框架,当然你也可以选择其他的,大同小异)
Prisma扩展
安装依赖包

yarn add prisma
1

Yarn-Add

prisma也可以全局安装,能够让我们直接使用prisma的命令

npm instal -g prisma
1

Yarn-Add-G

4 初始化

全局安装则可以直接使用 prisma init ,否则需要使用 npx prisma init

Init-ORM

注:如果全局安装无法使用 prisma init ,则重启 powershell 即可

执行结果:多了两个文件 prisma/schema.prisma 和 .env

File-Structure

如果使用mysql数据库,则需要更改 schema.prisma 中的驱动类型为 mysql
然后修改 .env 中的连接地址

DATABASE_URL="mysql://USER:PASSWORD@IP:3306/DBNAME"

5 安装Client工具

yarn add @prisma/client
1

Add-Client

注:官网说明告诉我们client干了什么

Org-Note

意思是每次我们修改了schema.prisma文件中的model,就需要执行生成命令npx prisma generate
Generate

或者直接从数据库中拉取表结构npx prisma db pull
DB-Pull

6 改造代码

在路由中添加从数据库读取数据的代码并赋值给ctx.body

// 无关代码忽略,如果不清楚可以看前面的文章说明
// 这里全部改成get请求,方便使用浏览器看效果
// 前面用post,演示get请求报错的要改回来
router.get("/", async (ctx) => {
  const allUsers = await prisma.user.findMany().catch((e) => {
    throw e
  }).finally(async () => {
    await prisma.$disconnect()
  })
  ctx.type = "application/json"
  ctx.body = allUsers
})

router.get("/getName", async (ctx) => {
  const allUsers = await prisma.aNote.findMany().catch((e) => {
    throw e
  }).finally(async () => {
    await prisma.$disconnect()
  })
  ctx.type = "application/json"
  ctx.body = allUsers
})
// 无关代码忽略
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

7 演示结果

打开浏览器查看运行效果
运行结果1
运行结果2

8 后记

至此,所有的准备工作就完成了,后续开发大家可以查看官方网站进行自主学习和探索,同时欢迎加好友一起交流探讨。微信号【bitem-cn】。

Koa: https://www.koajs.com.cn/
TypeScript: https://www.tslang.cn/docs/home.html
Prisma: https://prisma.yoga/