Skip to main content

安装配置

安装

$ 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 {}

配置参数说明

参数是否必传类型默认值说明
redisRedisOptions-redis 配置,用于存储 Access Token 这类共享信息
config数组undefined公众号配置信息列表
initAccessTokenbooleanfalse是否初始化 Access Token ,由于开发环境直接获取 Access Token 会导致和服务器竞争,所以特意增加了这个字段,开发环境程序启动不获取 Access Token 。增加于 v0.2.0 ,之前版本在初始化时均会请求 Access Token