Как получить конфиг из контроллера (требуется от контроллера)?
Я полностью использую приложение Kraken.js по умолчанию.
Я хочу определить некоторые конфиги для .dust
шаблоны (выберите параметры) в config.js
файл. Затем мне нужно получить эти конфиги в моем контроллере. Как я могу получить конфиг в контроллере? Вот пример кода:
'use strict';
var Post = require('../../models/post');
var mongoose = require("mongoose");
// How to get config, for example, here??
var config = require(".....config.....")
module.exports = function (router) {
// or how to get a config here as the third argument of a function, for example?
router.get('/', function (req, res) {
// Here I want to get data from config
res.render('posts', {
foo: config.foo,
bar: config.selects.selectOne.bar
});
}
2 ответа
Этот вопрос был продублирован в репозитории krakenjs.
Предполагая, что вы используете Kraken nconf
, опираясь на кеширование модуля узла, предоставляет синглтон. Другими словами, каждый раз, когда вы включаете nconf
вы получите точно такой же экземпляр. По этой причине вы можете получить доступ к конфигурации kraken с помощью чего-то вроде следующего:
var config = require('nconf');
var shouldHide = config.get('middleware:myModule:hideWidget');
if (shouldHide === true) {
// ... do something ...
}
Если, с другой стороны, вы используете kraken >= v1.0, kraken использует конфигурацию confit. Поскольку confit - по замыслу - не раскрывает синглтон, рекомендуется попытаться полностью разобраться с config в onConfig
обработчик Опять же, это рекомендуемый подход.
Тем не менее, есть определенные случаи, когда вы не можете обрабатывать всю конфигурацию на этапе инициализации, а, скорее, при разрешении маршрута. Для тех времен мы сохраняем конфигурацию kraken на экземпляре приложения как app.kraken
, Таким образом, пока у вас есть доступ к вашему экземпляру приложения, у вас есть доступ к вашей конфигурации.
Вот пример доступа к этой конфигурации из обработчика маршрута:
// ./routes/secure.js
'use strict';
module.exports = function (req, res) {
var shouldHide = req.app.kraken.get('middleware:myModule:hideWidget');
if (shouldHide === true) {
// ... do something ...
}
};
Вы можете добавить файл config.json и импортировать пакет "nconf" из NPM.
var nconf = require('nconf');
nconf.env().file({ file: 'config.json' });
var adminUsername = nconf.get("ADMIN");
И в вашем config.json:
{
"ADMIN": "Test",
}