首页 > 解决方案 > 将特定值注入对象构造函数

问题描述

我有几个接口的实现,它们每个都需要将自己的配置注入到构造函数中。我的问题是我是否可以以某种方式挂钩 NestJS(可能是 Inversify)中的依赖注入系统,以注入不仅是配置对象,而且是配置对象的特定子集。例如,如果config.ts看起来像这样:

const config = {
    http: {
        host: '0.0.0.0',
        port: 3000,
    },
    adapters: {
        disk: {
            path: 'C:\\path\\to\\my\\stuff',
        },
        dropbox: {
            api_key: 'asdfghjkl;',
            api_secret: 'blahblahblahblahblah'
        }
    },
};

我想以我的磁盘实现接收config.adapters.disk、我的保管箱实现接收config.adapters.dropbox等的方式注入配置,而不仅仅是config

标签: javascriptdependency-injectioninversion-of-controlnestjsinversifyjs

解决方案


如果我很好理解您的要求,您可以使用带有 useValue 或 useFactory 的提供程序,具体取决于您在注入之前必须解决的问题。我让你看一下文档的那部分。

例如,您可以执行 { token: 'myToken', useValue: config.property }

然后您只需将“myToken”注入您的构造函数。

还 useFactory 允许您在返回值之前处理某些内容


推荐阅读