@nestcloud/consul-config
v0.4.4
Published
A Nest framework (node.js) module for getting configurations from consul kv
Downloads
222
Readme
NestCloud - ConsulConfig
Description
A NestCloud component for getting and watching configurations from consul kv.
Installation
$ npm i --save @nestcloud/consul consul @nestcloud/consul-config
Quick Start
Import Module
import { Module } from '@nestjs/common';
import { ConsulModule } from '@nestcloud/consul';
import { ConsulConfigModule } from '@nestcloud/consul-config';
import { BootModule } from '@nestcloud/boot';
import { NEST_BOOT } from '@nestcloud/common';
@Module({
imports: [
ConsulModule.register({dependencies: [NEST_BOOT]}),
BootModule.register(__dirname, 'bootstrap.yml'),
ConsulConfigModule.register({dependencies: [NEST_BOOT]})
],
})
export class ApplicationModule {}
Configurations
consul:
host: localhost
port: 8500
service:
id: null
name: example-service
config:
key: config__${{ consul.service.name }}__${{ NODE_ENV }}
How to get remote configurations
In consul kv, the key is "config__example-service__development".
user:
info:
name: 'test'
Inject Config Client
import { Injectable } from '@nestjs/common';
import { InjectConfig, ConsulConfig } from '@nestcloud/consul-config';
@Injectable()
export class TestService {
constructor(
@InjectConfig() private readonly config: ConsulConfig
) {}
getUserInfo() {
const userInfo = this.config.get('user.info', {name: 'judi'});
console.log(userInfo);
}
}
Inject value
import { Injectable } from '@nestjs/common';
import { ConfigValue } from '@nestcloud/consul-config';
@Injectable()
export class TestService {
@ConfigValue('user.info', {name: 'judi'})
private readonly userInfo;
getUserInfo() {
return this.userInfo;
}
}
API
class ConsulConfigModule
static register(options): DynamicModule
Register consul config module.
| field | type | description | | :--- | :--- | :--- | | options.dependencies | string[] | if you are using @nestcloud/boot module, please set [NEST_BOOT] | | options.retry | number | the max retry count when get configuration fail |
class ConsulConfig
get(path?: string, defaults?: any): any
Get configuration from consul kv.
| field | type | description | | :--- | :--- | :--- | | path | string | the path of the configuration | | defaults | any | default value if the specific configuration is not exist |
getKey(): string
Get the current key.
watch(path: string, callback: (configs: any) => void): void
Watch the configurations.
| field | type | description | | :--- | :--- | :--- | | callback | (configs) => void | callback function |
async set(path: string, value: any): void
Update configuration.
| field | type | description | | :--- | :--- | :--- | | path | string | the path of the configuration | | value | any | the configuration |
Decorators
ConfigValue(path?: string, defaultValue?: any): PropertyDecorator
Inject configuration to attribute. It will change realtime when the value changed in consul kv.
Stay in touch
- Author - NestCloud
License
NestCloud is MIT licensed.