Внедрить определенные значения в конструктор объекта

У меня есть несколько реализаций интерфейса, и каждая из них нуждается в собственной конфигурации, вводимой в конструктор. Мой вопрос заключается в том, могу ли я каким-то образом подключить систему внедрения зависимостей в 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 ответ

Решение

Если я хорошо понимаю ваш запрос, вы можете использовать провайдера с useValue или useFactory в зависимости от того, что вы должны решить, прежде чем вводиться. Я позволю вам взглянуть на эту часть документации.

В качестве примера вы можете сделать { token: 'myToken', useValue: config.property }

И тогда вам просто нужно вставить myToken в ваш конструктор.

Также useFactory позволит вам обработать что-то перед возвратом значения

Другие вопросы по тегам