2014-07-07 134 views
3

我使用完全默认Kraken.js应用程序。如何从控制器中获取配置(需要从控制器中获取)?

我想为config.js文件中的.dust模板(选择选项)定义一些配置。然后我需要在控制器中获取这些配置。我怎样才能在控制器中获得配置?下面是一个示例代码:

'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 
     }); 
    } 

回答

6

这个问题是在krakenjs repo复制。

假设您使用Kraken < v1.0,配置由nconf处理。 nconf,依靠节点的模块缓存,提供了一个单例。换句话说,只要你包含nconf,你就会得到完全相同的实例。出于这个原因,你可以用一些访问海妖配置如下所示:

var config = require('nconf'); 

var shouldHide = config.get('middleware:myModule:hideWidget'); 

if (shouldHide === true) { 
    // ... do something ... 
} 

如果,另一方面,您使用的海怪> = 1.0,海妖利用confit进行配置。由于confit-design设计不会公开单身人士,建议您尝试完全在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 ... 
    } 
}; 
+0

这就是我所需要的。我使用Kraken> = v1.0,它像一个魅力。谢谢。 – Green

1

您可以添加一个config.json文件,并从NPM导入“nconf”包。

var nconf = require('nconf'); 

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

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

而在你的config.json:

{ 
    "ADMIN": "Test", 
}