Подтвердить что ты не робот

Сохранить объект в модуле и получить доступ к нему из разных модулей

Я использую следующий код для синтаксического анализа json-данных и сохранения его внутри моего модуля, например, когда сервер (например, npm server.js) Я использую функцию parse, которая анализирует json файлы. < ш > В конце эти обработанные jsons хранятся в объекте configObj, и я хочу, чтобы во время запроса пользователя (через экспресс) получить этот объект в модуле маршрутизатора или других модулях.

Как мне это достичь?

var configObj;
parse = function () {
        return fs.readFileAsync(file, 'utf8')
            .then(function (res) {
                return JSON.parse(res)
            }).then(function (jsonObj) {
                configObj = jsonObj;
                return jsonObj;
            })
....
        })
    };
    module.exports = {
        parse: parse,
        configObj: configObj
    }

Функция parse вызывается только один раз, и я хочу иметь доступ к configObj много раз в разных модулях.

4b9b3361

Ответ 1

Вы можете использовать что-то вроде node-persist:

var storage = require('node-persist');
storage.setItem('config', configObj);
console.log(storage.getItem('config'));

Ответ 2

Если вы используете наилучший способ экспресс-доставки, app.set: если требуется выполнить функцию сохранения функции модуля parse, например:

app.set("parse.configObj",configObj)

и получить его при необходимости:

app.get("parse.configObj")

Или вы можете использовать область require.cache после запроса:

server.js:

var parse = function () {
        return fs.readFileAsync(file, 'utf8')
            .then(function (res) {
                return JSON.parse(res)
            }).then(function (jsonObj) {
                if (typeof require.cache.persist === "undefined") {
                  require.cache.persist = {};
                }
                require.cache.persist.configObj = jsonObj;
                return jsonObj;
            })
    })
};
module.exports = { parse: parse }

app.s

var parse = require('./server.js').parse();

маршруты /index.js

console.log( require.cache.persist.configObj );