将特定值注入对象构造函数

时间:2018-07-16 17:22:47

标签: javascript dependency-injection inversion-of-control nestjs inversifyjs

我有一个接口的几种实现,它们每个都需要将自己的配置注入到构造函数中。我的问题是,是否可以以某种方式挂钩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

1 个答案:

答案 0 :(得分:1)

如果我很了解您的请求,则可以将提供程序与useValue或useFactory一起使用,具体取决于要在注入之前解决的问题。 我让您看一下文档的那一部分。

例如,您可以做 {令牌:“ myToken”,useValue:config.property}

然后您只需将“ myToken”注入到构造函数中即可。

useFactory还允许您在返回值之前进行处理