如何从控制器中获取配置(从控制器中获取配置)?

时间:2014-07-07 13:45:52

标签: node.js express kraken.js

我完全使用默认 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 个答案:

答案 0 :(得分:6)

此问题在krakenjs repo处重复。

假设您正在使用Kraken< v1.0,配置由nconf处理。 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-by设计 - 不公开单例,因此建议您尝试在onConfig handler中完全处理配置。同样,这是推荐的方法。

也就是说,在某些情况下,您无法在初始阶段处理所有配置,而是在路由解析时处理。对于那些时间,我们将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 ...
  }
};

答案 1 :(得分:1)

您可以添加config.json文件,然后导入" nconf"来自NPM的包裹。

var nconf = require('nconf');

nconf.env().file({ file: 'config.json' });

var adminUsername = nconf.get("ADMIN");

在你的config.json中:

{
    "ADMIN": "Test",
}