Store and retrive POJsO from consul keystore.
npm install --save consul-kv-object
var consul = require('consul')();
var kv = require('consul-kv-object')(consul.kv);
kv.set("test/key",{ pojo: true, nested: { yep: "asd" } });
kv.get("test/key", function( err, res ) { } );
kv.del("test/key");
Options are passed as optional second parameter.
| Option | Default | Meaning |
|---|---|---|
| mapTypes | true | Perform type mapping when setting and getting |
| guessTypes | false | Try to guess types when reading value with flags==0 |
| defaultType | see below | Default type to use when flag is not recognized |
| typeMapFlags | see below | Type mapping array |
| concurrency | 10 | Number of concurrent consul connections when setting values |
Types are preserved using flags and flag mapping array. Each type has other flag value.
When flag is not recognized or type mapping is disabled, consul-kv-object returns
strings.
When using guessTypes: true consul-kv-object will try to convert consul keys to
Numbers, Booleans and Dates based on built-in heuristic. Type guessing requires enabled
type mapping. Types determined by flags have priority.
Aim of type guessing is to allow operator to manually instert value into consul keystore.
By default consul-kv-object understands and maps following types:
- String
- Number
- Boolean
- Date
Other types can be mapped to be understood by consul-kv-object. To use custom types,
pass a flag mapping array as typeMapFlags option. It should consits of:
[
{ match: Function, make: Function, guess: Function }, // flags: 0
{ match: Function, make: Function, guess: Function }, // flags: 1
{ match: Function, make: Function, guess: Function },
[...]
]matchis the constructor function of your object, the one which is ininstance.constructor.makeis a factory function which takes a string and returns instance of your object.guessis a filter function, that takes a string and returnstrueif it is valid string representation of this type.
Objects used with consul-kv-object should have .toString method with enough representation
to re-construct object with make call.
Basic tests:
npm testTest coverage:
npm run coverage
Acceptance tests with live consul:
consul agent -bootstrap -server -advertise=127.0.0.1 -data-dir=/tmp/ &
npm run acceptance
