Node.js 我可以将当前的NCOF配置转储到对象吗?

Node.js 我可以将当前的NCOF配置转储到对象吗?,node.js,flatiron.js,Node.js,Flatiron.js,ncof中是否有任何方法将所有存储区中的所有密钥收集到单个对象中 想象一下,我有一个小剧本: 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.dee

ncof
中是否有任何方法将所有存储区中的所有密钥收集到单个对象中

想象一下,我有一个小剧本:

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?

是否有通过测试的
nconf.X
?我甚至愿意列出所有配置的密钥。

是要获取对象,您可以执行以下操作:

nconf.get();
它将无法通过测试,因为argv将使用exec字符串,而env将有更多的变量

您可以使用以下命令将env调用列入白名单

nconf.env({whitelist: 'A'});
此外,默认值还会将值为“literal”的“type”添加到结果输出中

对于通过的测试,您可以使用此选项

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);

从源代码看,这样的操作似乎没有实现,要实现它,需要访问提供者的属性并从存储中构建这样的对象。太好了,谢谢!如果启动后配置已修复,使用
对象
而不是
来使用自然js路径查找设置是否显得疯狂:
分隔的nconf路径?不客气,我假设这是一个偏好问题,我会导出到一个对象,因为我觉得它更方便。@Jason Brumwell而不是
nconf.get()
,我能否仅从命令行
process.argv
中获取传入的配置?显然,
nconf.get('argv')
不起作用。我还想获取所有的nconf属性
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);