2012-11-20 2 views
10

nconf에 모든 상점의 모든 키를 단일 오브젝트로 수집하는 방법이 있습니까? 내가 테스트를 통과 것이다 nconf.X이 있습니까현재 nconf 구성을 객체에 덤프 할 수 있습니까?

A=1 node script.js -B 2 

실행

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? 

:

나는이 작은 스크립트를 가지고 상상? 나는 구성된 모든 키를 나열하는 것에도 동의 할 것입니다.

+0

그것은 이러한 작업이 구현되지 않으며이 공급자의 속성을 액세스하고 상점에서 같은 객체를 구축 필요 구현하는 소스에서 나타납니다. –

답변

15

예 개체를 얻으려면 다음을 수행 할 수 있습니다.

nconf.get(); 

argv가 exec 문자열과 일치하고 env가 많은 변수를 갖기 때문에 테스트에 실패합니다.

당신은 결과 출력 값 '문자'와 '유형을'다음을 추가

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

또한 기본값을 사용하여 ENV 전화를 화이트리스트 수 있습니다.

테스트를 통과하면 다음을 사용할 수 있습니다.

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

정말 고마워! 시작 후 설정이 고쳐지면':'로 구분 된 nconf 경로 대신 자연스러운 js 경로를 사용하여 설정을 조회 할 때 '객체'를 사용하는 것이 좋지 않습니까? – hurrymaplelad

+0

여러분의 환영입니다. 저는 선호도가 좋다고 생각합니다. 오브젝트를 편리하게 찾을 수있게 내보낼 수 있습니다. –

+1

@Jason Brumwell'nconf.get()'대신에'process.argv' 명령 줄에서 전달 된 설정 만 얻을 수 있습니까? 분명히,'nconf.get ('argv')'는 작동하지 않습니다. – chepukha

관련 문제