前言
在开发 Web 应用程序时,大多数情况下需要与数据库打交道。ORM(对象关系映射)是一种存储方式,它可以将数据库表转换为对象,简化了开发过程。
Sequelize 是 Node.js 开发的 ORM,它支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 MSSQL。本文将介绍如何使用 Sequelize ORM 连接 MySQL 数据库,并创建 RESTful API。
准备工作
在开始之前,需要确保已经安装了 Node.js 和 MySQL。可以使用以下命令检查是否已经安装:
node -v mysql -V
如果没有安装,请参考官方文档安装。
安装 Sequelize 和相关库
可以使用以下命令安装 Sequelize 和相关库:
npm install --save sequelize sequelize-cli mysql2 express body-parser
其中,
sequelize
是 ORM 库;sequelize-cli
是 Sequelize 的命令行接口,可以帮助生成模型(Model)文件;mysql2
是 MySQL 驱动库;express
是 Web 应用程序框架;body-parser
用于解析请求的数据。
创建数据库
使用以下命令进入 MySQL 控制台:
mysql -u root -p
输入密码后进入后台,使用以下命令创建一个名为 mydb
的数据库:
CREATE DATABASE mydb;
创建模型
在 Sequelize 中,模型代表了数据库中的表。可以使用 Sequelize CLI 快速生成模型。
先使用以下命令初始化 Sequelize 项目:
npx sequelize-cli init
初始化完成后,会生成如下目录结构:
. ├─config │ └─config.json ├─migrations ├─models └─seeders
config
目录存放 Sequelize 的配置文件;migrations
目录存放用于表示数据库结构变化的文件;models
目录存放 Sequelize 模型文件;seeders
目录用于存放数据填充脚本,本文不涉及。
接下来使用以下命令创建一个新的模型文件:
npx sequelize-cli model:generate --name User --attributes name:string,email:string
这会在 models
目录下生成一个名为 user.js
的文件。
编辑 user.js
文件,更新如下:
-- -------------------- ---- ------- ---- -------- -------------- - ----------- ---------- -- - ----- ---- - ------------------------ - ----- ----------------- ------ ---------------- -- ---- -------------- - ---------------- - -- ------------ --- -- ------- ---- -- ------ ----- --
这个文件定义了一个名为 User
的模型,包含两个字段:name
和 email
。这里没有定义关联关系,可以忽略 associate
方法。
连接数据库
编辑 config/config.json
文件,更新如下:
-- -------------------- ---- ------- - -------------- - ----------- ------- ----------- ----------- ----------- ------- ------- ------------ ---------- ------- -- ------- - ----------- ------- ----------- ----------- ----------- ------- ------- ------------ ---------- ------- -- ------------- - ----------- ------- ----------- ----------- ----------- ------- ------- ------------ ---------- ------- - -
这里使用了与 MySQL 数据库相同的设置,你可以根据需要更改 username
和 password
等值。
使用以下命令创建数据库表:
npx sequelize-cli db:migrate
这个命令将自动运行 migrations
目录下的所有文件,执行数据库迁移操作。
在完成数据库表的创建后,可以测试连接是否成功。编辑 app.js
文件,更新如下:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- --------- - --------------------- ----- --- - ---------- ----- ---- - ----- ----- --------- - --- ----------------- ------- ----------- - ----- ------------ -------- ------- --- -------------------------------- -- - ----------------------- --- ---- ----------- ---------------- ------------ -- - --------------------- -- ------- -- --- ----------- ----- --- --------------------------- ------------------------------- --------- ---- ---- ---------------- -- -- - -------------------- --- --------- -- --------------------------- ---
这个代码片段使用 Sequelize 连接 MySQL 数据库,并验证连接是否成功。运行 app.js
文件:
node app.js
如果使用默认端口运行应用程序,则访问 http://localhost:3000/ 将显示如下错误:
Cannot GET /
创建 RESTful API
在创建的 app.js
文件中,可以添加一个路由来创建 RESTful API:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- --------- - --------------------- ----- --- - ---------- ----- ---- - ----- ----- --------- - --- ----------------- ------- ----------- - ----- ------------ -------- ------- --- -------------------------------- -- - ----------------------- --- ---- ----------- ---------------- ------------ -- - --------------------- -- ------- -- --- ----------- ----- --- ----- ---- - ------------------------ - ----- ----------------- ------ ---------------- --- --------------------------- ------------------------------- --------- ---- ---- ------------ ----- ---- -- - --------------- --------- --- ----------------- ----- ---- -- - ------------------------- -- - ---------------- --- --- ------------------ ----- ---- -- - ------------------------------- -- - --------------- --- --- ---------------- -- -- - -------------------- --- --------- -- --------------------------- ---
这个代码片段创建了用于 GET 和 POST 请求的路由。其中:
app.get('/users', ...)
定义了用于获取用户列表的路由;app.post('/users', ...)
定义了用于创建新用户的路由;
这些路由使用 Sequelize 操作数据库以获取和存储数据。
测试 API
使用以下命令重新启动应用程序:
node app.js
现在可以使用 cURL 工具测试 API:
curl -X GET 'http://localhost:3000/users'
输出结果为:
[]
表示当前数据库中没有任何用户。
现在可以创建新用户。使用以下命令创建新的用户:
curl -X POST 'http://localhost:3000/users' -H 'Content-Type: application/json' -d '{"name": "Alice", "email": "alice@example.com"}'
命令执行成功后,输出为:
{"id":1,"name":"Alice","email":"alice@example.com","createdAt":"2022-01-01T12:00:00.000Z","updatedAt":"2022-01-01T12:00:00.000Z"}
现在从数据库中检索所有用户。使用以下命令重新运行之前的 cURL 命令:
curl -X GET 'http://localhost:3000/users'
输出结果为:
[{"id":1,"name":"Alice","email":"alice@example.com","createdAt":"2022-01-01T12:00:00.000Z","updatedAt":"2022-01-01T12:00:00.000Z"}]
这表示当前存在一个名为 "Alice" 的用户。
总结
本文介绍了如何使用 Sequelize ORM 连接 MySQL 数据库,并创建 RESTful API。无论是为初学者,还是为更有经验的开发人员,本文都提供了有用的信息和所有关键代码,希望这篇文章能对你的知识储备和技术成长有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6471cf1a968c7c53b0fb68a9