我使用完全默认的Kraken.js应用程序. 我想在config.js文件中为.dust模板(选择选项)定义一些配置.然后我需要在我的控制器中获得这些配置.我怎样才能在控制器中获得配置?这是一个示例代
我想在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 }); }这个问题在 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 ... } };