前言
在现代的 Web 开发过程中,数据库操作是不可或缺的一部分。Sequelize 是一个强大的 ORM 框架,允许我们通过 JavaScript 对象来进行简单、可靠的数据库访问。另一方面,NestJS 是一个流行的 Node.js Web 框架,提供了一套完整的解决方案以满足我们的需求。本文将介绍 Sequelize 如何与 NestJS 框架集成,以便更容易地进行数据库操作。
安装
首先,我们需要安装 sequelize
和 sequelize-typescript
,以及 NestJS 相关的模块:
npm install --save sequelize sequelize-typescript nestjs-sequelize sequelize-cli mysql2
配置
在 NestJS 中,我们可以使用 nestjs-sequelize
模块来连接数据库。打开 app.module.ts
文件,并添加以下代码:
-- -------------------- ---- ------- -- ------------- ------ - ------ - ---- ----------------- ------ - --------------- - ---- -------------------- --------- -------- - ------------------------- -------- -------- ----- ------------ ----- ----- --------- ------- --------- ---------------- --------- --------------------- --------------- ----- ------------ ----- --- -- -- ------ ----- --------- --
在这个模块中,我们通过 SequelizeModule.forRoot()
配置了连接 MySQL 数据库的参数,并启用了模型自动加载和同步数据库表结构。
接下来,我们需要为 Sequelize 配置模型。在数据表中定义模型的属性和方法是 Sequelize 能力的核心。打开 user.model.ts
文件,并添加以下代码:
-- -------------------- ---- ------- -- ------------- ------ - ------ ------- ------ -------- - ---- ----------------------- -------- ---------- ------- -- ------ ----- ---- ------- ----------- - --------- ----- ---------------- ---------- ----- -- ----------- ------- --------- ----- ---------------- ---------- ----- -- ---------- ------- --------- ----- ---------------- ---------- ----- -- ------- ------- --------- ----- ---------------- ---------- ----- -- ---------- ------- -
在这个模型中,我们定义了一个名为 users
的表,使用了 sequelize-typescript
提供的装饰器进行了属性的定义。这些属性会被映射到数据库表中的列。
增删改查
创建数据
要在 NestJS 中创建数据,我们可以使用 SequelizeService
提供的 create()
方法。 示例如下:
-- -------------------- ---- ------- -- ---------------- ------ - ---------- - ---- ----------------- ------ - ----------- - ---- -------------------- ------ - ---- - ---- --------------- ------------- ------ ----- ------------ - ------------ ------------------ ------- --------------- ------ ----- - -- ----- ------------ ------ ------------- - ------ --------------------------------- - -
在上述示例中,我们使用了 SequelizeModule
暴露的 InjectModel()
方法来注入 User
模型的 userRepository
。通过调用 userRepository.create()
方法并传递一个 User
对象,我们就可以向数据库中存储一个新的用户。
读取数据
要从数据库中读取数据,使用 findAll()
或 findOne()
方法。示例如下:
-- -------------------- ---- ------- -- ---------------- ------ - ---------- - ---- ----------------- ------ - ----------- - ---- -------------------- ------ - ---- - ---- --------------- ------------- ------ ----- ------------ - ------------ ------------------ ------- --------------- ------ ----- - -- ----- ---------- --------------- - ------ ------------------------------ - ----- ----------- -------- ------------- - ------ ----------------------------- ------ - -- - --- - -
在上述示例中,我们使用了 findOne()
方法来返回 ID 为 id
的 User
对象。
更新数据
要在数据库中更新数据,我们需要使用 update()
方法,并传递要更新的模型实例。 示例如下:
-- -------------------- ---- ------- -- ---------------- ------ - ---------- - ---- ----------------- ------ - ----------- - ---- -------------------- ------ - ---- - ---- --------------- ------------- ------ ----- ------------ - ------------ ------------------ ------- --------------- ------ ----- - -- ----- ---------- ------- ----- ------ ----------------- - ------ -------------------------------- - ------ - -- - --- - -
在上述示例中,我们使用了 update()
方法并传递两个参数。第一个参数是要更新的 User
对象,第二个参数是要更新的ID。
删除数据
要从数据库中删除数据,我们需要使用 destroy()
方法,并传递要删除的模型实例的 ID。 示例如下:
-- -------------------- ---- ------- -- ---------------- ------ - ---------- - ---- ----------------- ------ - ----------- - ---- -------------------- ------ - ---- - ---- --------------- ------------- ------ ----- ------------ - ------------ ------------------ ------- --------------- ------ ----- - -- ----- ---------- -------- --------------- - ----- ---- - ----- ----------------- ----- --------------- ------ --- - -
在上述示例中,我们使用了 findOne()
方法来查找指定 ID 数的用户,并使用 destroy()
方法从数据库中删除该用户的实例。
总结
现在,你已经了解了如何使用 Sequelize 与 Nest.js 进行数据库操作,包括连接数据库、定义数据表、创建、读取、更新和删除数据。使用 NestJS 提供的 Sequelize 服务可以大大简化数据库操作并省略繁琐的 SQL 语句。希望这篇文章能为你提供有价值的信息。如有需要,可以查看 示例代码 获取更多帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647ee4f048841e9894e92a3c