Hapi 框架集成 TypeORM 实现 ORM 映射

阅读时长 9 分钟读完

在现代的 Web 应用程序开发中,ORM(对象关系映射)是经常被使用的一种技术,它可以帮助我们轻松地将数据库中的数据映射到程序中的对象上。在这个过程中,我们不需要编写 SQL 语句,而是通过编写代码来操作数据。TypeORM 是一种基于 TypeScript 的 ORM,它提供了许多功能,比如自动数据迁移、灵活的查询构建器等。在本文中,我们将介绍如何在 Hapi 框架中集成 TypeORM 实现 ORM 映射。

安装 Hapi 和 TypeORM

在开始之前,我们需要先安装 Hapi 和 TypeORM。我们可以使用 npm 包管理器来安装它们。

我们需要安装 reflect-metadata,因为 TypeORM 使用了 ES7 中的装饰器语法,并使用该库来实现它。

配置 TypeORM

TypeORM 配置的核心部分是 ormconfig.json 文件。我们需要在项目的根目录下创建一个 ormconfig.json 文件,并添加以下内容。

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

这个配置文件告诉 TypeORM 使用 MySQL 数据库,并且数据表会自动生成。同时,我们将 entity 和 migration 文件夹设置为项目的 src 目录下的相应文件夹。我们还需要注意的一个重要设置是 synchronize:设置为 true,并且在每次应用程序启动时都会从 entity 定义自动同步数据库架构。

创建实体

我们需要在 ormconfig.json 文件里指定 entities 的路径,这样 TypeORM 才能知道哪些类需要被映射到数据库中。

我们可以打开 src/entity/User.ts 文件添加以下代码来定义一个 User 实体。

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

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

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

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

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

上面的代码定义了一个 User 类,并使用了 TypeORM 提供的装饰器来表示该类应该被映射到数据库中。

创建 Repository

Repository 是一个在 Hapi 应用中管理实体的类。我们可以使用 Repository 来执行 CRUD 操作。

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

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

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

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

上面的代码定义了一个 UserRepository 类,并继承了 TypeORM 的 Repository 类。我们为这个类定义了一些方法,比如 createUser、getAllUsers 和 getUserById,可以执行对应的数据库操作。

注册插件

在 Hapi 框架中,我们可以使用插件将 Repository 注册到应用程序中。插件可以将插件注册函数附加到 Hapi 实例并配置插件。

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

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

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

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

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

在上面的代码中,我们首先创建了一个 Hapi 服务器实例,然后使用 TypeORM 创建了与数据库的连接。接着,我们使用 server.register 将 UserRepository 插件注入到 Hapi 应用程序中。最后,调用 server.start 函数启动应用程序。

使用 Repository

当我们完成了上述步骤后,我们的应用程序就可以使用我们创建的 UserRepository 来执行数据库操作了。下面是一些示例代码。

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

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

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

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

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

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

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

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

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

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

-------

在上面的代码中,我们使用 Hapi 路由来定义不同的 API 路径。我们可以使用 userRepository 来执行不同的数据库操作。

总结

本文介绍了如何在 Hapi 框架中集成 TypeORM,以便实现 ORM 映射。我们首先安装了必要的依赖项,然后配置了 ormconfig.json 文件。接着,我们创建了一个 User 实体和一个 UserRepository,我们可以使用 Repository 来执行 CRUD 操作。最后,我们将 UserRepository 插件注册到 Hapi 应用程序中,并使用它来执行数据库操作。

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

纠错
反馈