node-config - node-config 将分隔符从点更改为冒号
问题描述
我正在将我的配置从另一个库迁移到node-config。
我有两个问题:
- 旧库用于
config.get('a:b');
获取一些值,但node-config
使用单个点作为分隔符:config.get('a.b');
.
有没有办法配置它来:
节省我的时间和重构我的代码?
- 有没有办法设置运行时值。例如
config.set('key', 'val');
?
解决方案
通过以下方式完成:1. 包装node-config
一个新的 js 文件 2. 代理get
,has
和set
methods 方法
像这样的东西:
const config = require('config');
const inMemDict = {};
const toNewKey = key => {
return key && key.split(':').join('.');
};
const { get: origGet, has: origHas } = config;
config.get = function (key, ...args) {
key = toNewKey(key);
if(typeof inMemDict[key] !== 'undefined') {
return inMemDict[key];
}
return origGet.apply(config, [key, ...args]);
};
config.has = function (key, ...args) {
key = toNewKey(key);
if(typeof inMemDict[key] !== 'undefined') {
return inMemDict[key];
}
return origHas.apply(config, [key, ...args]);
};
config.set = function (key, val) {
if(!key) return;
inMemDict[toNewKey(key)] = val;
};
module.exports = config;
推荐阅读
- c++ - 打印功能无法正常工作 - 链表
- android - 为什么我们可以设置“var name = null”而没有错误
- arrays - 选项 Base 0 并从范围创建数组
- mysql - 如何在 SAS 中自动添加 id
- javascript - HTML5 响应式在图像周围环绕弯曲文本
- google-bigquery - 如何在 BigQuery 中获取每天的累积记录
- java - 在Java中,i++是一元运算符还是算术运算符?
- python - 扫描字符串文字时的 EOL,即使它已关闭
- multithreading - 混淆应用程序后android锁定主线程
- flutter - 使用 chart_flutter 进行水平滚动时标签溢出窗口