node用express写后端restful接口实战二:用sequelize的操作数据库,sequelize的安装,创建数据库
Sequelize 是什么?
在 Node.js 世界,最简单的操作数据库的方式,是使用 Sequelize。Sequelize 是一个基于 promise 的 Node.js ORM,它具有强大的事务支持,关联关系,预读和延迟加载,读取复制等功能。Sequelize,其实除了支持MySQL外,还可以支持以下这些数据库:
- Postgres
- MariaDB
- SQLite
- Microsoft SQL Server
1.安装
$ 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 命令,而不用每一个项目都单独安装。
-
最后一个命令,是初始化项目。
sequelize的初始化后目录结构
.
├── config
│ └── config.json
├── migrations
├── models
│ └── index.js
└── seeders
初始化项目后,在项目文件夹中发现又新增了这么多新目录。
-
config 是配置的意思,这里放的也就是 sequelize 所需要的连接数据库的配置文件。
-
migrations 是迁移的意思,如果你需要对数据库做新增表、修改字段、删除表等等操作,就需要在这里添加 迁移文件 了
-
models 里面存放的是模型文件,我们使用 sequelize 来执行 CURD,也就是 创建、修改、读取、删除数据,就需要用这里的模型了。每个模型都对应数据库中的一张表。
-
seeders,是存放的种子文件。一般会将一些需要添加到数据表的测试数据存在这里。只需要运行一个命令,数据表中就会自动填充进测试内容了。
-
以上这些东东,我们下一节会一一用到,这一节大家只需要了解,当运行了 sequelize init 以后,生成的目录中有哪些东西就好了。
2.创建数据库
下面要做的是创建一个 blog 项目所需要的数据库,
首先要把数据库mysql服务运行起来,可用系统安装的,也可用phpstudy里的,随便启动一个即可
1.先来修改下 config/config.json
可以看到这里有三段配置,在不同环境中,程序就会运行不同的配置。
环境 | 说明 |
---|---|
development | 开发环境,项目开发时候使用 |
test | 测试环境,项目测试使用 |
production | 生产环境,项目正式上线时使用 |
- 现在要做的就是项目开发,当然就是改 development 了
- 首先来改数据库密码。
- 接着要改的是,数据库的名称。一般来说,设置的和项目名称一致就好了,咱们改为 blog_development。
"development": {
"username": "root",
"password": "root",
"database": "blog_development",
"host": "127.0.0.1",
"dialect": "mysql"
}
2. 设置完成后,运行命令,创建数据库
$ sequelize db:create --charset 'utf8mb4'
实操过程
F:\Test\node\blog>sequelize db:create --charset 'utf8mb4'
Sequelize CLI [Node: 12.8.1, CLI: 6.2.0, ORM: 6.3.5]
Loaded configuration file "config\config.json".
Using environment "development".
Database blog_development created.
Tips:
-
命令的最后面添加了参数,使用 utf8mb4 编码格式,这样咱们存中文到数据库,就不会出现乱码了。
-
有的同学碰到过,运行这条命令的时候报错。那么也可以直接使用 MySQL客户端 软件,自己手动建库。注意将编码设置为 utf8mb4 就好。
-
打开 数据库软件,刷新下,发现果然出现了
blog_development
这个数据库 -