开发一个项目,就像 ITFun
上的课程、文档等,这些真实数据都是存在数据库中的。这节课,咱们就要来聊一下 MySQL
数据库,以及 Node.js
中,操作数据库最方便的方法。
Why MySQL?
MySQL
数据库是世界上最流行的,用户量最多的开源数据库,没有之一。有哪些知名的项目使用呢?请看图

大家都认识的一些,例如淘宝
、Twitter
、腾讯
、Github
、谷歌
等大量项目都是使用的 MySQL
数据库。其实还有好多好多,基本你能看到的知名互联网项目,90% 以上都是使用的MySQL
。
之所以使用 MySQL
,最主要的原因有几个:
- 开源
- 免费
- 知名用户多,跟着主流走
- 相对简单易用,教程多
Sequelize 是什么?
在 Node.js
世界,最简单的操作数据库的方式,是使用 Sequelize。Sequelize
是一个基于 promise
的 Node.js ORM
,它具有强大的事务支持,关联关系,预读和延迟加载,读取复制等功能。Sequelize
,其实除了支持MySQL
外,还可以支持以下这些数据库:
- Postgres
- MariaDB
- SQLite
- Microsoft SQL Server
安装
$ cnpm install sequelize -S
$ cnpm install mysql2 -S
$ cnpm install sequelize-cli -g
$ sequelize init
进入自己项目路径后,需要同时安装 sequelize
和 mysql2
。这样才能正常操作 MySQL
数据库。最后,咱们安装了 sequelize-cli
,这个和上一集用到的 express-generator
类似,是用来通过命令创建 sequelize
需要的目录和相关代码的。
Tips: 这里安装 sequelize-cli
使用的是 -g
参数,将它安装成全局的了。这样就可以在任意的 Node.js
项目中都直接运行 sequelize
命令,而不用每一个项目都单独安装。
最后一个命令,是初始化项目
。
目录结构
.
├── config
│ └── config.json
├── migrations
├── models
│ └── index.js
└── seeders
初始化项目后,在项目文件夹中发现又新增了这么多新目录。
-
config
是配置
的意思,这里放的也就是 sequelize
所需要的连接数据库
的配置文件。
-
migrations
是迁移
的意思,如果你需要对数据库做新增表
、修改字段
、删除表
等等操作,就需要在这里添加 迁移文件
了
-
models
里面存放的是模型
文件,我们使用 sequelize
来执行 CURD
,也就是 创建、修改、读取、删除数据,就需要用这里的模型了。每个模型都对应数据库中的一张表。
-
seeders
,是存放的种子
文件。一般会将一些需要添加到数据表的测试数据存在这里。只需要运行一个命令,数据表中就会自动填充进测试内容了。
以上这些东东,我们下一节会一一用到,这一节大家只需要了解,当运行了 sequelize init
以后,生成的目录中有哪些东西就好了。
创建数据库
下面要做的是创建一个 blog
项目所需要的数据库,先来修改下 config/config.json
。可以看到这里有三段配置,在不同环境中,程序就会运行不同的配置。
环境 |
说明 |
development |
开发环境,项目开发时候使用 |
test |
测试环境,项目测试使用 |
production |
生产环境,项目正式上线时使用 |
咱们现在要做的就是项目开发,当然就是改 development
了。需要设置的是:密码
和数据库名称
。
首先来改数据库密码。如果你是 macOS
系统,并且在安装 MySQL
的时候是按照咱们课程走的,那你的密码和我一样,这里填root
,不要忘记了外面要加 引号
。如果你用的 laragon
,它的默认数据库密码是空
,所以保持 null
就好。
接着要改的是,数据库的名称。一般来说,设置的和项目名称一致就好了,咱们改为 blog_development
。
"development": {
"username": "root",
"password": "root",
"database": "blog_development",
"host": "127.0.0.1",
"dialect": "mysql"
}
设置完成后,运行命令,创建数据库。
$ sequelize db:create --charset 'utf8mb4'
Tips:
命令的最后面添加了参数,使用 utf8mb4
编码格式,这样咱们存中文到数据库,就不会出现乱码了。
有的同学碰到过,运行这条命令的时候报错。那么也可以直接使用 MySQL客户端
软件,自己手动建库。注意将编码设置为 utf8mb4
就好。

打开 数据库软件
,刷新下,发现果然出现了 blog_development
这个数据库。
参考文档