Sequelize 之使用 NestJS 框架进行数据库操作

阅读时长 8 分钟读完

前言

在现代的 Web 开发过程中,数据库操作是不可或缺的一部分。Sequelize 是一个强大的 ORM 框架,允许我们通过 JavaScript 对象来进行简单、可靠的数据库访问。另一方面,NestJS 是一个流行的 Node.js Web 框架,提供了一套完整的解决方案以满足我们的需求。本文将介绍 Sequelize 如何与 NestJS 框架集成,以便更容易地进行数据库操作。

安装

首先,我们需要安装 sequelizesequelize-typescript,以及 NestJS 相关的模块:

配置

在 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 为 idUser 对象。

更新数据

要在数据库中更新数据,我们需要使用 update() 方法,并传递要更新的模型实例。 示例如下:

-- -------------------- ---- -------
-- ----------------

------ - ---------- - ---- -----------------
------ - ----------- - ---- --------------------
------ - ---- - ---- ---------------

-------------
------ ----- ------------ -
  ------------
    ------------------
    ------- --------------- ------ -----
  - --

  ----- ---------- ------- ----- ------ ----------------- -
    ------ -------------------------------- - ------ - -- - ---
  -
-

在上述示例中,我们使用了 update() 方法并传递两个参数。第一个参数是要更新的 User 对象,第二个参数是要更新的ID。

删除数据

要从数据库中删除数据,我们需要使用 destroy() 方法,并传递要删除的模型实例的 ID。 示例如下:

-- -------------------- ---- -------
-- ----------------

------ - ---------- - ---- -----------------
------ - ----------- - ---- --------------------
------ - ---- - ---- ---------------

-------------
------ ----- ------------ -
  ------------
    ------------------
    ------- --------------- ------ -----
  - --

  ----- ---------- -------- --------------- -
    ----- ---- - ----- -----------------
    ----- ---------------
    ------ ---
  -
-

在上述示例中,我们使用了 findOne() 方法来查找指定 ID 数的用户,并使用 destroy() 方法从数据库中删除该用户的实例。

总结

现在,你已经了解了如何使用 Sequelize 与 Nest.js 进行数据库操作,包括连接数据库、定义数据表、创建、读取、更新和删除数据。使用 NestJS 提供的 Sequelize 服务可以大大简化数据库操作并省略繁琐的 SQL 语句。希望这篇文章能为你提供有价值的信息。如有需要,可以查看 示例代码 获取更多帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647ee4f048841e9894e92a3c

纠错
反馈