前言

上一篇介绍了如何创建项目、路由的访问以及如何创建模块,这篇来讲讲数据库的连接与使用。

既然是后端项目,当然要能连上数据库,否则还不如直接写静态页面。

本教程使用的是 MySQL,有人可能会问为啥不用 MongoDB。。。呃,因为公司使用 MySQL,我也是结合项目经历写的教程,MongoDB 还没踩过坑,所以就不在这误人子弟了。

GitHub 项目地址,欢迎各位大佬 Star。

首先要确保你有数据库可以连接,如果没有,可以在 MySQL 官网下载一个,本地跑起来。安装教程这里就不叙述了,“百度一下,你就知道”。

推荐使用 Navicat Premium 可视化工具来管理数据库。

用 Navicat 连接上数据库后,新建一个库:

二、使用 Sequelize 操作数据库 - 图3

点开我们刚创建的库 ,点开 Tables,发现里面空空如也,接下来我们创建一张新表,点开上面工具栏的 Query,并新增查询:

将下列代码复制到框内,点击上面的运行,即可完成表的创建:

二、使用 Sequelize 操作数据库 - 图5

然后我们可以看到,左边的 Tables 下多出了 admin_user 表,点开就可以看到字段信息了:

二、使用 Sequelize 操作数据库 - 图7

二、项目的数据库配置

先在项目根目录创建一个文件夹 config(与 src 同级),专门放置各种配置。

然后新建一个文件 db.ts:

市面上有很多连接数据库的工具,笔者这里使用的是 ,先安装依赖包:

然后在 src 目录下创建文件夹 database,然后再创建 sequelize.ts

好了,接下来我们来测试一下数据库的连接情况。

我们重写 user.service.ts 的逻辑:

保存文件,就会看到控制台刷新了(前提是使用 yarn start:dev 启动的),并打印下列语句:

这说明之前的配置生效了,我们试着用之前的参数请求一下接口:

二、使用 Sequelize 操作数据库 - 图9

返回 “查无此人”,说明数据库没有叫 “Kid” 的用户。

我们改成正确的已存在的用户名再试试:

二、使用 Sequelize 操作数据库 - 图11

再对照一下数据库里的表,发现查出来的数据和数据库里的一致,至此,MySQL 连接测试完成,以后就可以愉快的在 Service 里面搬砖了。

总结

这篇介绍了 MySQL 的数据准备、Sequelize 的配置、Nest 怎么通过 Sequelize 连接上 MySQL,以及用一条简单的查询语句去验证连接情况。

在这里,强烈建议使用写原生 SQL 语句去操作数据库

虽然 Sequelize 提供了很多便捷的方法,具体可去 Sequelize v5 官方文档 浏览学习。但笔者通过观察 logging 打印出来的语句发现,其实多了很多无谓的操作,在高并发的情况下,太影响性能了。

而且如果不使用原生查询,那么就要建立对象映射到数据库表,然后每次工具更新,还要花时间成本去学习,如果数据库改了字段,那么映射关系就会出错,然后项目就会疯狂报错以致宕机(亲身经历)。

而使用原生 SQL,只需要学一种语言就够了,换个工具,也能用,而且就算改了字段,也只会在请求接口的时候报错,到时候再针对那个语句修改就好了,而且现在查找替换功能这么强大,批量修改也不是难事。

最重要的是,如果你是从前端转后端,或者根本就是 0 基础到后端,还是建议先把 SQL 的基础打牢,不然连 JOINLEFT JOINRIGHT JOIN 的区别都分不清(我们公司就有个三年经验的后端,乱用 LEFT JOIN,然后被 DB 主管一顿痛骂。。。真事儿)。

多写、多分析、多看控制台报错、多从性能上考虑,才是最快入门的途径。

下一篇,将介绍如何使用 JWT(Json Web Token)进行单点登录。

`

图雀社区 微信公众号