在 Web 应用中,对用户输入进行数据验证是十分重要的。而 Sequelize 是一个 Node.js 的 ORM(Object-Relational Mapping) 库,可以方便我们操作数据库。在本文中,我们将介绍如何在 Express.js 中使用 Sequelize 进行数据验证。
安装
首先,在项目目录下运行以下命令安装 Sequelize:
--- ------- ------ ---------
将 Sequelize 连接到数据库,可选的支持以下关系型数据库系统:PostgreSQL, MySQL, MariaDB, SQLite, MSSQL。
如果想要在本地进行测试,可以使用 SQLite,只需要安装 sqlite3 的包即可。
--- ------- ------ -------
然后,将 Sequelize 和相关依赖包作为开发依赖安装(如果想要在生产环境使用 Sequelize,请将其移至生产依赖中)。
--- ------- ---------- ------------- --------------------
在项目根目录下,使用以下命令初始化 Sequelize:
--- ------------- ----
在初始化过程中会提示选择要连接的数据库信息。
创建模型
在 Sequelize 中,需要定义模型来表示数据库中的表。下面,我们将创建一个 User 模型,并在其中添加一些验证器,以确保数据的正确性。
在 src/models/User.ts
中添加以下代码:
------ - ------ ------- ------ --------- ------- ------- - ---- ----------------------- ------ ------ ------- ----- ---- ------- ----------- - --------- ----- ---------------- ---------- ------ -- ---------- ------- ------- --------- ----- ---------------- ---------- ------ -- ------- ------- -------- ------------------------ ------- ------- --------- ----- ---------------- ---------- ------ -- ---------- ------- -
这里我们使用了 sequelize-typescript 来定义模型。 在 User 模型中,我们定义了一些列,它表示数据库表中的列,还定义了一些验证器。
@Column
用于定义列,参数allowNull
表示该列是否可以为 null。@Unique
用于定义唯一性约束。@IsEmail
用于验证邮箱格式。
请注意,我们在 User 模型中定义 email 两次。唯一性约束应该定义在属性前面,以确保 email 是唯一的。验证器应该定义在属性类型的后面,它们将确保 email 具有正确的格式。
创建路由
在定义了模型后,我们需要创建一些路由来处理请求。例如,在以下代码中,我们将创建一个 /users
路径,它将处理用户的 GET、POST、PUT、DELETE 请求。
在 src/routes/users.ts
中添加以下代码:
------ -------- - ------ - ---- ---------- ------ ---- ---- ----------------- ----- ------- ------ - ----------------- -------------------- ----- ----- ---------------- ---- ----------------- -- - ----- ----- - ----- --------------- ---------------- --- --------------------- ----- ----- ---------------- ---- ----------------- -- - --- - ----- ---- - ----- ---------------------- --------------- - ----- ----- - ---------------------- ------ ----------- --- - --- ------------------------ ----- ----- ---------------- ---- ----------------- -- - --- - ----- - -- - - ----------- ----- ---- - ----- ------------------ -- ------- ----- --- ----------- --- -------- ----- ---------------------- --------------- - ----- ----- - ---------------------- ------ ----------- --- - --- --------------------------- ----- ----- ---------------- ---- ----------------- -- - --- - ----- - -- - - ----------- ----- ---- - ----- ------------------ -- ------- ----- --- ----------- --- -------- ----- --------------- ---------- -------- ---- --- - ----- ----- - ---------------------- ------ ----------- --- - --- ------ ------- -------
在 /users
路径中,我们使用了 User
模型来创建、查找、更新和删除用户。使用 try-catch 语句,如果数据库返回错误,则返回 400 Bad Request
响应。否则,我们将返回 JSON 数据,表示成功创建、更新或删除用户的信息。
使用请求验证器
我们已定义了模型的验证器,但怎么使用它们来验证来自路由的请求呢?为了解决这个问题,可以使用一个名为 express-validation
的中间件来验证请求。安装它:
--- ------- ------ ------------------
在 src/routes/users.ts
中添加以下代码:
----- - --------------------- -------------------- - - ------------------------------ ----- -------- - ------------------------------ --------------------- ------------------------------- ----- ----- ---------------- ---- ----------------- -- - --- - ----- ---- - ----- ---------------------- --------------- - ----- ----- - ---------------------- ------ ----------- --- - --- ------------------------ ------------------------------- ----- ----- ---------------- ---- ----------------- -- - --- - ----- - -- - - ----------- ----- ---- - ----- ------------------ -- ------- ----- --- ----------- --- -------- ----- ---------------------- --------------- - ----- ----- - ---------------------- ------ ----------- --- - ---
这里我们使用了 express-validation
中间件来验证请求。例如,以下是 createUserValidation
的一个示例:
------ - ---- -------- - ---- ------------ ------ ----- -------------------- - - ---------------- ------------------- --------- ------------------------------- ------ --------------------------------------- --------- ------------------------ --- --
在 createUserValidation
中,我们定义了必须存在的属性和验证器。
请求仅在验证成功后才会被路由处理程序处理。
运行应用
现在,我们已经定义了模型、路由和验证器,接下来我们来运行应用程序。在项目的根文件夹中运行以下命令:
--- --- -----
打开浏览器并在 http://localhost:3000/
输入该网址,即可开始测试我们的应用程序。
结论
本文介绍了如何在 Express.js 中使用 Sequelize 进行数据验证。我们创建了一个 User 模型,并在其中添加了一些验证器,然后使用这个模型创建了路由,并使用 express-validation
中间件来验证请求。希望这篇文章能够帮助你将 Sequelize 用到自己的项目中来。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66f4c8e8c5c563ced5650294