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