NestJS 使用来自 ConfigService 的配置注入 Dropox 实例
NestJS inject Dropox instantion with config from ConfigService
我有我的文件服务,我想为我的应用程序添加 Dropbox 文件存储。
我想从另一个文件(或在服务中声明一次)注入或类似的东西。问题是如何注入该文件 configService 以获得需要进行实例化的 accessToken
filesService.ts
@Injectable()
export class FilesService {
constructor(
private fileRepo: FilesRepo,
private usersRepo: UsersRepo,
private configService: ConfigService,
){
// const dbx = new Dropbox({ accessToken: this.configService.get('DROPBOX_TOKEN') })
// this.dbx = new Dropbox({ accessToken: this.configService.get('DROPBOX_TOKEN') })
}
//private dbx = new Dropbox({ accessToken: this.configService.get('DROPBOX_TOKEN') })
我想声明一次,而不是在每个需要它的服务功能中。
files.module.ts
@Module({
imports: [
TypeOrmModule.forFeature([FilesRepo,UsersRepo]),
MulterModule.register({
dest: './filesTemp',
}),
ConfigModule,
],
providers: [FilesService],
exports: [FilesService],
controllers: [FilesController]
})
export class FilesModule {}
您可以创建一个自定义提供程序,例如
{
provide: 'DropboxService',
inject: [ConfigService],
useFactory: (config: ConfigService) => {
return new Dropbox({ accessToken: config.get('DROPBOX_TOKEN') });
}
}
现在在您的 FileService
中,您使用 @Inject('DropboxService') private readonly dropbox: Dropbox)
注入创建的实例。
我有我的文件服务,我想为我的应用程序添加 Dropbox 文件存储。
我想从另一个文件(或在服务中声明一次)注入或类似的东西。问题是如何注入该文件 configService 以获得需要进行实例化的 accessToken
filesService.ts
@Injectable()
export class FilesService {
constructor(
private fileRepo: FilesRepo,
private usersRepo: UsersRepo,
private configService: ConfigService,
){
// const dbx = new Dropbox({ accessToken: this.configService.get('DROPBOX_TOKEN') })
// this.dbx = new Dropbox({ accessToken: this.configService.get('DROPBOX_TOKEN') })
}
//private dbx = new Dropbox({ accessToken: this.configService.get('DROPBOX_TOKEN') })
我想声明一次,而不是在每个需要它的服务功能中。
files.module.ts
@Module({
imports: [
TypeOrmModule.forFeature([FilesRepo,UsersRepo]),
MulterModule.register({
dest: './filesTemp',
}),
ConfigModule,
],
providers: [FilesService],
exports: [FilesService],
controllers: [FilesController]
})
export class FilesModule {}
您可以创建一个自定义提供程序,例如
{
provide: 'DropboxService',
inject: [ConfigService],
useFactory: (config: ConfigService) => {
return new Dropbox({ accessToken: config.get('DROPBOX_TOKEN') });
}
}
现在在您的 FileService
中,您使用 @Inject('DropboxService') private readonly dropbox: Dropbox)
注入创建的实例。