安装配置
安装
$ npm i @iot9x.com/nestjs-official
or
$ yarn add @iot9x.com/nestjs-official
or
$ pnpm add @iot9x.com/nestjs-official # 推荐使用pnpm
配置
同步方式
import { Module } from '@nestjs/common';
import { OfficialModule } from '@iot9x.com/nestjs-official'
@Module({
imports: [
OfficialModule.forRoot({
redis: { // redisOptions 参数选填
host:'localhost',
port:6379,
db:1,
password:'',
keyPrefix:'official-'
},
config: [{
appid: '公众号appid',
appSecret: '公众号app secret',
authToken: '微信调用第三方服务器token',
encodingAESKey: '微信调用第三方服务器消息加密解密秘钥',
}],
initAccessToken: true // 是否在初始化的时候获取Access Token
})
]
})
export class AppModule {}
异步方式
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigType } from '@nestjs/config';
import { OfficialModule } from '@iot9x.com/nestjs-official'
import { OfficialRegister } from './modules/config/registers/official.register';
import { RedisConfigRegister } from './modules/config/registers/redis.register';
import { CONFIG_PROVIDER } from './modules/config/constants/config.constant';
import { ConfigValidation } from './modules/config/validations/config.validation';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
validationSchema: ConfigValidation,
validationOptions: {
allowUnknown: true,
abortEarly: true
},
load: [OfficialRegister, RedisConfigRegister]
}),
OfficialModule.forRootAsync({
useFactory: (
commonConfig: ConfigType<typeof CommonConfigRegister>,
redisConfig: ConfigType<typeof RedisConfigRegister>,
officialConfig: ConfigType<typeof OfficialConfigRegister>
) => ({
redis: { ...redisConfig.common, ...redisConfig.official },
config: [officialConfig],
initAccessToken: commonConfig.nodeENV === 'production' // 是否在初始化的时候获取Access Token
}),
inject: [CommonConfigRegister.KEY, RedisConfigRegister.KEY, OfficialConfigRegister.KEY]
})
]
})
export class AppModule {}
配置参数说明
参数 | 是否必传 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
redis | 是 | RedisOptions | - | redis 配置,用于存储 Access Token 这类共 享信息 |
config | 否 | 数组 | undefined | 公众号配置信息列表 |
initAccessToken | 否 | boolean | false | 是否初始化 Access Token ,由于开发环境直接获取 Access Token 会导致和服务器竞争,所以特意增加了这个字段,开发环境程序启动不获取 Access Token 。增加于 v0.2.0 ,之前版本在初始化时均会请求 Access Token 。 |