2012-11-20 11 views
10

क्या सभी दुकानों से सभी वस्तुओं को एक ही ऑब्जेक्ट में एकत्र करने के लिए nconf में कोई विधि है?क्या मैं वर्तमान nconf कॉन्फ़िगरेशन को किसी ऑब्जेक्ट पर डंप कर सकता हूं?

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? 

कि मैं

A=1 node script.js -B 2 

के साथ चलाने के वहाँ एक nconf.X कि परीक्षा उत्तीर्ण होगा है:

मैं इस छोटे से स्क्रिप्ट मिल गया है कल्पना कीजिए? मैं सभी कॉन्फ़िगर की गई कुंजीों को सूचीबद्ध करने के लिए भी व्यवस्थित हूं।

+0

यह स्रोत से प्रतीत होता है कि इस तरह के एक ऑपरेशन को लागू नहीं किया गया है और इसे लागू करने के लिए प्रदाता के गुणों तक पहुंचने और स्टोर से ऐसी वस्तु बनाने की आवश्यकता होगी। –

उत्तर

15

हां ऑब्जेक्ट प्राप्त करने के लिए आप निम्न कार्य कर सकते हैं;

nconf.get(); 

यह परीक्षण विफल हो जाएगा क्योंकि exec स्ट्रिंग के साथ argv होगा और 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

बढ़िया, धन्यवाद! अगर स्टार्टअप के बाद कॉन्फ़िगरेशन तय किया गया है, तो क्या यह 'ऑब्जेक्ट' का उपयोग करने के लिए पागल लग रहा है, जो कि ':' सीमित एनएफओ पथ के बजाय प्राकृतिक जेएस पथ का उपयोग कर सेटिंग्स को देखने के लिए पागल है? – hurrymaplelad

+0

आपका स्वागत है, मैं इसे वरीयता का मामला मानूंगा, मैं किसी ऑब्जेक्ट को निर्यात करता हूं क्योंकि मुझे यह अधिक सुविधाजनक लगता है। –

+1

@ जेसन ब्रूमवेल 'nconf.get()' के बजाय, क्या मैं केवल कमांड लाइन, 'process.argv' से पास की गई कॉन्फ़िगरेशन प्राप्त कर सकता हूं? जाहिर है, 'nconf.get (' argv ') 'काम नहीं करता है। – chepukha