在现代 Web 应用程序中,数据库操作是不可或缺的一部分。 Sequelize 是一个流行的对象关系映射(ORM)框架,可以与多种关系型数据库一起使用。 TypeScript 是一个强类型的 JavaScript 超集,可以提高代码的可读性和可维护性。本文将介绍如何在 TypeScript 项目中使用 Sequelize,并提供一个示例应用程序来演示其实践。
安装
在使用 Sequelize 前,需要先安装它及其相关的依赖。可以通过 npm 安装:
npm install sequelize sequelize-typescript mysql2 @types/sequelize @types/mysql2
sequelize
: Sequelize 的主要依赖sequelize-typescript
: Sequelize 的 TypeScript 版本mysql2
: MySQL 驱动@types/sequelize
: Sequelize 的 TypeScript 类型定义@types/mysql2
: MySQL 驱动的 TypeScript 类型定义
配置
在使用 Sequelize 时,需要配置数据库连接。在 TypeScript 项目中,可以创建一个 sequelize.ts
文件,定义数据库连接和 Sequelize 实例。以下是一个示例配置:
-- -------------------- ---- ------- ------ - --------- - ---- ----------------------- ----- --------- - --- ----------- --------- ------------- -------- -------- --------- --------- --------- ------------- ------- ---------- - ----------- --- ------ ------- ----------展开代码
上述代码创建了一个 Sequelize 实例,并定义了数据库连接信息。其中,database
、username
和 password
分别是数据库名称、用户名和密码,dialect
是数据库类型。models
是一个数组,包含 Sequelize 模型的定义文件路径。
定义模型
在 Sequelize 中,模型是指表格的定义。可以通过 TypeScript 类来定义 Sequelize 模型。以下是一个示例模型定义:
-- -------------------- ---- ------- ------ - ------ ------ ------- -------- - ---- ----------------------- ------ ------ ----- ---- ------- ----------- - --------- ----- ---------------- ---------- ------ -- ------ ------- --------- ----- ---------------- ---------- ------ -- ------- ------- -展开代码
上述代码定义了一个 User
模型,它有两个属性:name
和 email
。@Table
装饰器用于指定表格的名称,如果未指定,则使用类名作为表格名称。@Column
装饰器用于指定列属性。在这个示例中,name
和 email
都是字符串类型,且不能为空。
数据库操作
在定义了模型后,就可以使用 Sequelize 进行数据库操作了。以下是一些常见的操作示例:
查询
import sequelize from './sequelize'; import { User } from './models/user'; (async () => { await sequelize.authenticate(); const users = await User.findAll(); console.log(users); })();
上述代码首先验证了数据库连接,然后查询了所有用户记录,并将结果打印到控制台。
插入
-- -------------------- ---- ------- ------ --------- ---- -------------- ------ - ---- - ---- ---------------- ------ -- -- - ----- ------------------------- ----- ---- - ----- ------------- ----- -------- ------ -------------------- --- --------------------------- -----展开代码
上述代码首先验证了数据库连接,然后插入了一条新的用户记录,并将结果打印到控制台。
更新
-- -------------------- ---- ------- ------ --------- ---- -------------- ------ - ---- - ---- ---------------- ------ -- -- - ----- ------------------------- ----- ---- - ----- ----------------- --------- - ------ ----- ------------ --------------------------- -----展开代码
上述代码首先验证了数据库连接,然后查询了 ID 为 1 的用户记录,将其名称修改为 Bob
,并保存到数据库中。最后将结果打印到控制台。
删除
import sequelize from './sequelize'; import { User } from './models/user'; (async () => { await sequelize.authenticate(); const user = await User.findByPk(1); await user.destroy(); })();
上述代码首先验证了数据库连接,然后查询了 ID 为 1 的用户记录,将其从数据库中删除。
示例应用程序
为了演示 Sequelize 和 TypeScript 的结合实践,我们将创建一个简单的 Web 应用程序,它可以管理用户记录。以下是应用程序的要点:
- 使用 Express 框架
- 使用 EJS 模板引擎
- 使用 Sequelize 和 MySQL 数据库
- 使用 Bootstrap 样式
- 实现用户记录的 CRUD 操作
在开始之前,请确保已经安装了上述依赖。以下是应用程序的目录结构:
-- -------------------- ---- ------- ---- ------------ ------- ------- ------- ------ --------- -------- ------展开代码
模型定义
首先,我们需要定义一个 User
模型。在 models/user.ts
文件中,添加以下代码:
-- -------------------- ---- ------- ------ - ------ ------ ------- -------- - ---- ----------------------- ------ ------ ----- ---- ------- ----------- - --------- ----- ---------------- ---------- ------ -- ------ ------- --------- ----- ---------------- ---------- ------ -- ------- ------- -展开代码
控制器
接下来,我们需要定义一个控制器来处理用户记录的 CRUD 操作。在 controllers/user.ts
文件中,添加以下代码:
-- -------------------- ---- ------- ------ - -------- -------- - ---- ---------- ------ - ---- - ---- ----------------- ------ ----- ----- - ----- ----- -------- ---- --------- -- - ----- ----- - ----- --------------- ------------------- - ----- --- -- ------ ----- ---- - ----- ----- -------- ---- --------- -- - ----- -- - ---------------------- ----- ---- - -- - ----- ----------------- - --- ------- ------------------ - ---- --- -- ------ ----- ---- - ----- ----- -------- ---- --------- -- - ----- -- - ---------------------- ----- - ----- ----- - - --------- -- ---- - ----- ---- - ----- ------------------ --------- - ----- ---------- - ------ ----- ------------ - ---- - ----- ------------- ----- ----- --- - ------------------ -- ------ ----- ------ - ----- ----- -------- ---- --------- -- - ----- -- - ---------------------- ----- ---- - ----- ------------------ ----- --------------- ------------------ --展开代码
上述代码定义了四个控制器方法:
index
: 查询所有用户记录,并渲染views/index.ejs
模板。edit
: 根据 ID 查询用户记录,或者创建一个新的用户记录,并渲染views/edit.ejs
模板。save
: 根据 ID 更新或者创建用户记录,并重定向到首页。remove
: 根据 ID 删除用户记录,并重定向到首页。
视图模板
最后,我们需要定义两个视图模板:views/index.ejs
和 views/edit.ejs
。以下是它们的代码:
views/index.ejs
:
-- -------------------- ---- ------- --------- ----- ------ ------ -------------------- ----- ---------------- --------------------------------------------------------------------------------------- ------- ------ ---- ---------------- ------ -------------- ----- ------------ ---------- ---------------- ------------ ------ -------------- ------- ---- ------------- -------------- --------------- ----- -------- ------- -- --- ------ ---- -- ------ - -- ---- ------- --------- ------- ------- ---------- ------- ---- -- --------------- ------- --- ---------- ------ --------------------- -- ----------------- ------- --- ---------- ------ ---------------------- ----- ----- -- - -- -------- -------- ------ ------- -------展开代码
views/edit.ejs
:
-- -------------------- ---- ------- --------- ----- ------ ------ ---------- ------- - ------ - ----- -- ------------ ----- ---------------- --------------------------------------------------------------------------------------- ------- ------ ---- ---------------- ------ ------- ------- - ------ - ----- -- --------- ----- ------------- ---------------- ------- - --- - ------- - -- ---- ---- ------------------- ------ ------------------------ ------ ----------- -------------------- --------- ----------- ---------- --------- -- -- ---- ------ ---- ------------------- ------ -------------------------- ------ ------------ -------------------- ---------- ------------ ---------- ---------- -- -- ---- ------ ------- ------------- ---------- -------------------------- -- -- --------- - -- -- -------- ---------- ------------------------- -- - -- ------- ------ ------- -------展开代码
应用程序入口
最后,我们需要在 app.ts
文件中编写应用程序的入口代码:
-- -------------------- ---- ------- ------ ------- ---- ---------- ------ ---------- ---- -------------- ------ --------- ---- -------------- ------ - ---- - ---- ---------------- ------ - -- -------------- ---- --------------------- ----- --- - ---------- ------------- -------- ------- ---------------- ---------------------- ------------------------------- --------- ----- ---- ------------ ---------------------- --------------------- --------------------- ---------------------- --------------------- ---------------------- ----------------------- ------ -- -- - ----- ------------------------- ----- ----------------- ---------------- -- -- - ---------------- -- ------- -- ------------------------ --- -----展开代码
上述代码定义了 Express 应用程序,设置了 EJS 模板引擎和 bodyParser 中间件。然后定义了四个路由,分别对应用户记录的 CRUD 操作。最后,验证数据库连接并启动应用程序。
结论
在本文中,我们介绍了如何在 TypeScript 项目中使用 Sequelize,并提供了一个示例应用程序来演示其实践。通过结合 Sequelize 和 TypeScript,可以提高代码的可读性和可维护性,使得开发 Web 应用程序更加高效和愉悦。希望本文对你有所帮助,祝你在前端领域取得更多的成就!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67788597c1c5215e3cc5bce1