随着 Web 技术不断的发展,前端在业务逻辑处理中占据越来越重要的地位。在前端与后台接口交互过程中,ORM(对象关系映射)技术被广泛的使用。ORM 技术实现了面向对象编程模型和关系型数据库的数据模型之间的转换,让开发者更加直观的处理数据之间的关系。Sequelize 是 Node.js 的一款优秀的 ORM 库,它可以在 Node.js 中使用各种关系数据库。
在本文中,我们将详细阐述 Sequelize 结合 Express 实现 ORM 的优雅实践,并将提供示例代码以达到学习和指导的目的。
为什么要使用 Sequelize
Sequelize 是一个高效易用的 ORM 库,它使得开发者可以在 Node.js 中轻松对关系型数据库进行操作,不必再去关心数据库底层的实现细节。Sequelize 支持多种数据库,包括:
- PostgreSQL
- MySQL
- MariaDB
- SQLite
- Microsoft SQL Server
它的许多功能使得开发者能够更方便和快速的操作数据库,包括:
- 统一的 API,支持 Promise 和 Async/Await 模式
- 支持数据库的大多数操作,例如:查询、插入、更新和删除等
- 支持事务
- 支持 Sequelize CLI - 一个命令行接口工具,可以通过 CLI 进行数据库修改和操作
通过使用 Sequelize,我们可以更加方便和快速的操作数据库,并且避免了直接操作数据库会带来的风险和困难。
使用 Express 和 Sequelize 来实现 ORM 的优雅实践
在本节中,我们将详细讨论如何使用 Express 和 Sequelize 实现 ORM 的优雅实践。
配置 Sequelize
首先,我们需要安装 Sequelize 和相应的驱动程序。我们可以使用 npm 包管理器来安装它们。
npm install --save sequelize sequelize-cli pg pg-hstore
在安装完成后,我们可以通过 CLI 的方式来初始化 Sequelize 项目,并配置数据库的连接信息。
npx sequelize-cli init
这将自动生成一个 config.json
文件和一个 models
目录。
config.json
存储了连接不同环境下的数据库的配置信息。models/index.js
文件负责初始化 Sequelize 实例,并自动加载其他所有 model 文件。
我们需要根据不同环境,配置数据库的连接信息。
-- -------------------- ---- ------- - -------------- - ----------- ----------- ----------- ----------- ----------- ----------------------- ------- ------------ ---------- ---------- -- ------- - ----------- ----------- ----------- ----------- ----------- ---------------- ------- ------------ ---------- ---------- -- ------------- - ------------------- --------------- ---------- ---------- - -
创建 Model
在 Sequelize 中,我们需要创建一个 model 来映射数据库中的表格。要创建一个 model,我们需要定义一个 Sequelize 模型的类,并将其传递给 Sequelize 的 define()
方法。
在创建 Model 之前,我们需要安装 sequelize-typescript 模块。该模块使得我们可以使用 Typescript 来编写 Sequelize Model 代码。
npm i -D sequelize-typescript
例如,我们希望创建一个 User
Model,我们可以按照以下代码来定义它:
-- -------------------- ---- ------- ------ - ------ --------- - ---- ------------ ------ --------- ---- ---------- ------ ------- ----- ---- ------- ----- - ---- ------- ------ ------- ------- ------- ------ -------- ----------- ----- ------ -------- ----------- ----- - ---------- - --- - ----- --------------------------- -------------- ----- ----------- ----- -- ----- - ----- ---------------------- ---------- ------ -- ------ - ----- ---------------------- ---------- ------ ------- ----- -- -- - ---------- -------- ---------- - --
上方的代码中,我们定义了一个 User
类。这个类继承了 Sequelize 的 Model
类,并定义了 id
、name
和 email
属性。
我们使用 User.init()
方法来定义这个 Model,包括定义表格名称以及每个属性的类型和限制。我们将 sequelize
作为第二个参数传递给 init()
方法,这样 Sequelize 就可以知道如何连接到数据库并定义相应的 model 映射。
使用 Model
创建 model 后,我们可以使用它来执行各种与数据库有关的操作。例如,我们可以使用 Sequelize Model 提供的 create()
方法来向数据库中插入新的数据。
-- -------------------- ---- ------- ------ ---- ---- ---------------- ----- -------- ------------ - ----- ---- - ----- ------------- ----- -------- ------ ---------------------- --- --------------------------- - -------------
上面的代码使用 User.create()
方法来创建了一个新的用户,并将其作为 user
对象返回。通过 toJSON()
方法,我们可以将返回的数据序列化为 JSON 格式,以便于调试和输出。
添加路由和控制器
现在,我们已经完成了 Sequelize 和 Express 的配置,并且编写了一个我们想要映射到数据库的 model。在本节中,我们将跟着这个思路并创建一个路由以及一个用于与数据库创建新用户的控制器。
首先,我们需要创建一个 UserController
控制器,并定义一个 createUser
方法。在这个方法中,我们可以使用上一节中的操作,并使用 Express 的 res.json()
方法将结果返回给请求。
-- -------------------- ---- ------- ------ - -------- -------- - ---- ---------- ------ ---- ---- ----------------- ------ ------- ----- -------------- - ------ ------ ---------- - ----- ----- -------- ---- --------- -- - --- - ----- ---- - ----- ------------- ----- -------------- ------ --------------- --- ---------------------- -------- ----- ------- --------------- ---- --- - ----- ----- - ---------------------- ------ ------- -- ------ --- ----- --- - -- -
然后,我们可以创建一个路由来匹配一个 POST 请求到 /users
路径,并调用 UserController.createUser
方法。
import express from "express"; import UserController from "../controllers/UserController"; const router = express.Router(); router.post("/users", UserController.createUser); export default router;
现在,我们已经定义了一个路由,发送一个 POST 请求到 /users
可以使用 UserController.createUser
方法创建一个新用户。
总结
在本篇文章中,我们详细介绍了 Sequelize 结合 Express 实现 ORM 的优雅实践。我们讨论了如何配置一个 Sequelize 项目,创建 Model,并使用 Sequelize Model 来执行各种与数据库有关的操作。我们还创建了一个路由和控制器来演示如何将 Sequelize 与 Express 结合使用。
Sequelize 提供了一种优雅且方便的方法来对数据库进行操作,可以使得前端开发人员更加方便地进行数据库交互,减少不必要的工作量和减轻工作压力。希望这篇文章可以对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c5cc2495c405902ee34c43