2012-11-20 5 views
10

Czy istnieje jakakolwiek metoda w nconf, aby zebrać wszystkie klucze ze wszystkich sklepów w jeden obiekt?Czy mogę zrzucić bieżącą konfigurację nconf do obiektu?

Wyobraź Mam ten mały skrypt:

assert = require('assert'); 
nconf = require('nconf'); 

nconf.argv().env().defaults({'C': 3}); 
assert.equal(nconf.get('A'), 1); 
assert.equal(nconf.get('B'), 2); 
assert.equal(nconf.get('C'), 3); 
assert.deepEqual({'A':1, 'B':2, 'C':3}, nconf.X); // <-- What's X? 

że biegnę z

A=1 node script.js -B 2 

Czy istnieje nconf.X że będzie zdać egzamin? Spróbuję nawet wyliczyć wszystkie skonfigurowane klucze.

+0

Wydaje się od źródła, że ​​taka operacja nie jest realizowany i wdrożenia będzie to wymagać uzyskiwania dostępu do właściwości dostawcę i budowy takiego obiektu ze sklepów. –

Odpowiedz

15

Tak, aby uzyskać obiekt, można wykonać następujące czynności;

nconf.get(); 

to nie powiedzie się testowi, ponieważ argv będzie z ciągiem exec, a env będzie miał o wiele więcej zmiennych.

Można białej listy wezwanie env stosując następujące

nconf.env({whitelist: 'A'}); 

także domyślnie dodaje „typ” z wartością „dosłownego” do uzyskanego wyjścia.

Do testu, który przechodzi, można go użyć;

var assert = require('assert'), 
nconf = require('nconf'); 

nconf.argv().env({whitelist: ['A']}).defaults({'C': 3}); 
assert.equal(nconf.get('A'), 1); 
assert.equal(nconf.get('B'), 2); 
assert.equal(nconf.get('C'), 3); 

var object = nconf.get(); 

delete object.type; 
delete object['$0']; 
delete object['_']; 

assert.deepEqual({'A':1, 'B':2, 'C':3}, object); 
+0

Świetnie, dzięki! Jeśli konfiguracja została naprawiona po uruchomieniu, czy korzystanie z tego 'obiektu' do wyszukiwania ustawień przy użyciu naturalnych ścieżek js zamiast' nepłasowanych ścieżek ':' wydaje się szalone? – hurrymaplelad

+0

Twoje powitanie, zakładam, że jest to kwestia preferencji, eksportuję do obiektu, ponieważ uważam to za wygodniejsze. –

+1

@Jason Brumwell Zamiast 'nconf.get()', mogę uzyskać tylko konfiguracje przekazywane z wiersza poleceń, 'process.argv'? Najwyraźniej 'nconf.get ('argv')' nie działa. – chepukha

Powiązane problemy