разделитель конфигурации узла меняет точку с двоеточия - PullRequest
0 голосов
/ 14 апреля 2020

Я переношу свою конфигурацию из другой библиотеки в node-config .

У меня есть два вопроса:

  1. Старая библиотека использует config.get('a:b'); для получения какое-то значение, но node-config использует одну точку в качестве разделителя: config.get('a.b');.

Есть ли способ настроить его на использование : для экономии моего времени и рефакторинга моего кода?

Есть ли способ установить значения времени выполнения. например, config.set('key', 'val');?

1 Ответ

0 голосов
/ 24 апреля 2020

Сделано: 1. обернуть node-config в новый js файл 2. проксировать методы методов get, has и set

Примерно так:

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