1.0.0 • Published 4 years ago

nestjs-ali-oss v1.0.0

Weekly downloads
6
License
MIT
Repository
github
Last release
4 years ago

Description

Aliyun OSS module for Nest based on the official ali-oss package.

Installation

$ npm i nestjs-ali-oss ali-oss --save
$ npm i @types/ali-oss --save-dev
# or
$ yarn add nestjs-ali-oss ali-oss
$ yarn add @types/ali-oss --dev

Usage

Import AliOssModule:

import { AliOssModule } from 'nestjs-ali-oss';

@Module({
  imports: [AliOssModule.register({
    region: '<oss region>',
    accessKeyId: '<Your accessKeyId>',
    accessKeySecret: '<Your accessKeySecret>',
    bucket: '<Your bucket name>'
  })],
  providers: [...],
})
export class AppModule {}

Inject AliOssService:

import { AliOssService } from 'nestjs-ali-oss';

@Injectable()
export class AppService {
  constructor(private readonly aliOssService: AliOssService) {}
}

Async options

Quite often you might want to asynchronously pass your module options instead of passing them beforehand. In such case, use registerAsync() method, that provides a couple of various ways to deal with async data.

1. Use factory

import { AliOssModule } from 'nestjs-ali-oss';

AliOssModule.registerAsync({
  useFactory: () => ({
    region: '<oss region>',
    accessKeyId: '<Your accessKeyId>',
    accessKeySecret: '<Your accessKeySecret>',
    bucket: '<Your bucket name>'
  })
});

Obviously, our factory behaves like every other one (might be async and is able to inject dependencies through inject).

AliOssModule.registerAsync({
  imports: [ConfigModule],
  useFactory: async (configService: ConfigService) => ({
    region: configService.getString('OSS_REGION'),
    accessKeyId: configService.getString('OSS_KEY'),
    accessKeySecret: configService.getString('OSS_SECRET'),
    bucket: configService.getString('OSS_BUCKET'),
  }),
  inject: [ConfigService],
}),

2. Use class

AliOssModule.registerAsync({
  useClass: AliOssConfigService
});

Above construction will instantiate AliOssConfigService inside AliOssModule and will leverage it to create options object.

import { AliOssModuleOptionsFactory, AliOssModuleOptions } from 'nestjs-ali-oss';

export class AliOssConfigService implements AliOssModuleOptionsFactory {
  createAliOssOptions(): AliOssModuleOptions {
    return {
      region: '<oss region>',
      accessKeyId: '<Your accessKeyId>',
      accessKeySecret: '<Your accessKeySecret>',
      bucket: '<Your bucket name>'
    };
  }
}

3. Use existing

AliOssModule.registerAsync({
  imports: [ConfigModule],
  useExisting: ConfigService,
}),

It works the same as useClass with one critical difference - AliOssModule will lookup imported modules to reuse already created ConfigService, instead of instantiating it on its own.

API Spec

The AliOssService wraps the Client from the official ali-oss methods. The AliOssModule.register() takes options object as an argument, read more.

License

MIT