С nest. js, как я могу вставить Provider, у которого есть конструктор? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть conversations.module.ts, в котором есть:

@Module({
  imports: [ImageModule, YoutubeModule],
  controllers: [ConversationsController],
  providers: [ConversationsService, ParticipantsService, StreamsService]
})
export class ConversationsModule { }

, а в моем conversations.controller.ts у меня:

@Controller('conversations')
export class ConversationsController {
    constructor(private conversationsService: ConversationsService, private imageService: ImageService, private youtubeService: YoutubeService, private participantsService: ParticipantsService, private streamsService: StreamsService) { }

Но я хочу ввести AWS Модуль S3:

const secretsmanager = new S3({ region: 'us-east-1' })

, который требует его создания. Как я могу выполнить sh это?

1 Ответ

1 голос
/ 08 мая 2020

Похоже, вы ищете специального провайдера. Вы можете определить токен внедрения (строку) и передать его объекту с ключом provide и ключом useClass, useValue или useFactory, определяющим, какое значение должно быть введено. В вашем случае вы можете сделать что-то вроде

{
  provide: 'SECRETS_MANAGER',
  useValue: new S3({ region: 'us-east-1' }),
}

И теперь вы можете использовать токен инъекции с декоратором @Inject() в конструкторе, например,

constructor(@Inject('SECRETS_MANAGER') private readonly manager: S3) {}

Или любого другого типа new S3() возвращается.

...