mysql 支持
mysql
node-mysql 包 简称 mysql 包(不要和数据库 mysql 搞混概念) ,是一款 mysql 数据库链接驱动,类似于 jdbc.jar
安装和配置
安装后npm install mysql,在项目创建一个导出 mysql 的链接实例。
使用
查询学生表中所有记录
结合 koa 的路由,你需要这么用
mysql2
nodejs 的 mysql 模块虽然功能强大,但是由于发布的时间比较久,后续的版本有些地方跟不上大前端技术的迭代脚步,还是存在一些缺点:
- 回调问题,mysql 的操作都是通过回调函数来执行,这就回到了我们熟悉的“回调地狱”,过多的回调函数嵌套,会大大的破坏代码的可读性和可维护性。
- Promise 和 async/await,跟早起的 node 其他模块一样,mysql 模块并不支持 Promise 和 async/await 语法,要使用这些语法,需要自形封装 mysql 的操作。
- 缺少高级功能支持,例如:语句预处理、流式查询等,对新版本的 mysql 支持不足(mysql8 的密码加密格式问题等)
- 性能问题,在大数据量或者高并发的情况下,mysql 模块会出现性能受限的情况,主要原因是其无法发挥 nodejs 的异步特性和性能特性。
针对上面的问题,mysql2做了很多改进,mysql2 基于 mysql-native 项目进行改进,同时兼容 mysql 的 API。
安装和配置
安装后npm install mysql2,在项目创建一个导出 mysql 的链接实例。
使用
可以很方便的结合 koa 的路由
ORM
不想手撸 sql 语句吗? 想偷懒? ORM 框架就是做这个的,比如Prisma、TypeORM、sequelize
通过配置数据库表结构和自定义的实体映射(orm),提供一种简单的对数据增删改查操作,使开发人员可以使用面向对象的编程风格来操作数据库。
具体选哪个 网上有很多比较,我们暂时以目前流行和 star 最多的 Prisma 为例子。
安装和初始化
npm install prisma之后,初始化它 npx prisma init, 这个命令会干两件事情
- 创建一个名为 prisma 的目录,并且目录里面有 schema.prisma 文件,这个文件主要是放 表结构的
- 创建一个名为.env 的配置文件,这个是用来链接数据库的,数据库的连接串就放在这里
检测数据库连通和自动生成模型
连接的过程中,prisma 会自动将 实体模型写入 Prisma Schema文件(prisma/schema.prisma)中
之后,你项目的 schema.prisma中 可能会多出模型定义代码
使用
要想 crud 等,需要先安装 Prisma 客户端 npm install @prisma/client, 然后执行 npx prisma generate 来生成客户端代码(既操作表 crud 的代码,包含 js和cs),最后你就可以使用啦
npx prisma generate, 这个命令会读取Prisma Schema文件(通常位于prisma/schema.prisma),并生成相应的客户端代码,这些代码会被放置在node_modules/.prisma/client目录下。当Prisma Schema发生变化时,需要重新生成Prisma Client(既重新执行 npx prisma generate)以确保代码的更新。
简言之:npx prisma db pull 的时候生成实体模型,npx prisma generate 生成表操作代码