2013-06-27 3 views
4

Я использую nconf для обработки конфигурации в своем приложении. Путь я устанавливаю его следующим образом:значения конфигурации только для чтения с использованием nconf и env

nconf.env({ 
    separator: '__', 
    whitelist: ['foo', 'bar'] 
}) 
.file('config.json') 

Оказывается, что я не могу изменить значения, если они были получены с помощью переменной окружения. Например,

console.log(nconf.get()); // {"foo":123,"bar":356} 
nconf.set('foo', 789); 
console.log(nconf.get()); // {"foo":123,"bar":356} 

Я проверил атрибут nconfstores и, кажется, предполагают, что env переменные только для чтения?

console.log(nconf.stores); 
/** 
* { env: 
* { type: 'env', 
*  store: { foo: [Object] }, 
*  mtimes: { 'foo': 1372348332705 }, 
*  readOnly: true, <-- here 
*  loadFrom: null, 
*  whitelist: 
*   ... 

Есть ли способ, чтобы переменные, заданные с помощью env переменных, которые будут изменены во время выполнения? Если я установил значения, которые были установлены с использованием файла config.json, я могу без каких-либо проблем изменять значения.

Любая помощь очень ценится :-)

ответ

0

Вот как я решил эту

nconf.stores.env.readOnly = false; 
nconf.set('foo', 789); 
nconf.stores.env.readOnly = true; 
console.log(nconf.get()); // {"foo":789,"bar":356} 

Надежда, что помогает.