介绍
typeorm-typedi-extensions 是一个由 TypeORM 和 typedi 集成的 npm 包,它允许您在 TypeORM 实体类中使用 typedi 中的依赖注入。这使得 TypeORM 实体类可以更加灵活,易于维护。
安装
typeorm-typedi-extensions 可以通过 npm 安装:
npm install typeorm-typedi-extensions
使用
在你的 TypeORM 实体类中使用 typedi 依赖注入之前,请确保已在您的项目中配置好 typedi。
以下是一个简单的示例,说明如何在 TypeORM 实体类中使用 typedi 依赖注入:
首先,我们在实体类定义的构造函数中添加一个构造函数参数:
-- -------------------- ---- ------- ------ - ------- ------- ---------------------- - ---- ---------- ------ - ------ - ---- --------- --------- ------ ----- ---- - ------------------------------------------ ------- -------------------- -------------------- -- ------------------------- --- ------- --------- ----- ------- --------- ------ ------- ----- ---------------- ------------- - ----- ---------------------------------------- ------------------------------------------ - -
在这个例子中,我们使用了一个名为 userServiceProvider 的依赖注入标识符,并在实体类的构造函数中使用了一个名为 UserServiceProvider 的依赖注入服务。我们还添加了一个名为 saveAndNotify 的实例方法,它使用userServiceProvider来保存用户和通知用户,这个方法将是我们例子中使用依赖注入的主要方法。
然后,在您的 typedi 配置中添加对 UserServiceProvider 的注册(服务提供者):
import { Container } from 'typedi'; import { UserServiceProvider } from './services/user'; // Register service providers Container.set('userServiceProvider', new UserServiceProvider());
如您所见,我们使用 Container.set 来将 UserServiceProvider 注册为'userServiceProvider'的标识符。现在,我们可以通过 UserServiceProvider 在保存用户和通知用户之前进行任何前置处理。
示例代码
下面是一个完整的 TypeScript 示例代码,展示了如何使用 typeorm-typedi-extensions 进行依赖注入:
-- -------------------- ---- ------- ------ ------------------- ------ - ----------------- ----------- ------------ - ---- ---------- ------ - --------- - ---- --------- ------ - ---- - ---- ------------------ ----- -------- -------- ------------- - -- -------- -------- ----- ------------------- - --- ---------------------- ------------------------------------ --------------------- -- --- ------ -- ------- -- -------- ------------------------ -- ------ - ------- ---------- ----- ----------- ---------- - ----- ------------------ ----- ----------- ----- ------------ ----- ----- --------- ------- --------- ----------- --------- ----------- --------- ------- ------------ ---- --- -- ---- - --- ---- ---- ------ -- ----- -------------- - ------------------------------- ----- ---- - --- ------- --------- - ----- ----- ---------- - ----------------------- ----- -------------------------- -- ------ --- ---- ---- ------ -- ----- --------------------- -- ----- --- ---------- ----- ------------------- - --------------------- -- ----------------------
在本例中,我们首先注册了 UserServiceProvider 服务提供者,然后使用 Container.set 将其注册为'userServiceProvider'的标识符。接下来,我们使用 useContainer 方法将 typedi 作为 TypeORM 的 DI 解析器。
然后,我们创建了一个 TypeORM 连接,并保存了一个新的用户,使用 typedi DI 将其注入 User 实体类中。最后,我们使用 user.saveAndNotify 方法,在保存和通知用户之前执行一些前置处理。这个例子说明了如何在 TypeORM 中使用 typedi 依赖注入。
结论
使用 typeorm-typedi-extensions,我们可以将 typedi 的依赖注入机制集成到 TypeORM 实体类中。这使得我们可以更加方便地编写可维护和可测试的代码。希望这篇文章对你理解 TypeORM 和 typedi 的依赖注入机制有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedae68b5cbfe1ea0610e35