首页 > 解决方案 > node-config 将分隔符从点更改为冒号

问题描述

我正在将我的配置从另一个库迁移到node-config

我有两个问题:

  1. 旧库用于config.get('a:b');获取一些值,但node-config使用单个点作为分隔符:config.get('a.b');.

有没有办法配置它来:节省我的时间和重构我的代码?

  1. 有没有办法设置运行时值。例如config.set('key', 'val');

标签: node-config

解决方案


通过以下方式完成:1. 包装node-config一个新的 js 文件 2. 代理get,hassetmethods 方法

像这样的东西:

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;

推荐阅读