Meteor.settings对象何时何地初始化?

时间:2017-04-19 10:31:13

标签: javascript meteor

正如标题所说,我需要知道Meteor.settings对象何时被初始化。

我想要做的是,使用一些默认值预先创建此对象,并在meteor初始化对象时使用设置文件中的值覆盖任何这些值。

Atm我应用这样的默认值:

settings.json:

{
    "foo" : {
        "bar":true
    }
}    

的javascript:

bar = Meteor.settings.foo.bar == undefined ? false : Meteor.settings.foo.bar;

我将为每件房产做些什么......

只是提前创建Meteor.settings.foo对象并在设置文件中出现属性时覆盖它们会更好。

更新: 好的,我发现了问题......

我在函数外面设置了foo.bar:

var foo = Meteor.settings.foo

所以现在还没有定义。但后来在函数中,当我加入属性时,我没有得到更新的对Meteor.settings.foo的引用;

无论如何都是寻求帮助。

2 个答案:

答案 0 :(得分:1)

从服务器启动的那一刻起,

Meteor.settings将被加载。但是,您可以随时覆盖该对象。 我通常将覆盖放在Meteor.startup内的server / main.js中。

// server/main.js

Meteor.startup(() => {
  Meteor.settings = {} // your new object

})

但是,请注意重写。在整个系统中,它应该在一个地方完成,因此一切都是一致的。

答案 1 :(得分:1)

要获得Meteor中所有设置的词典,我建议您在Meteor.startup函数中使用这个小代码:

Meteor.startup(function() {

    // read environment variables from Meteor.settings
    if(Meteor.settings && _.isObject(Meteor.settings)) {
        for(let variableName in Meteor.settings) {
            process.env[variableName] = Meteor.settings[variableName];
        }
    }
});

您现在可以在服务器端访问您的设置:

process.env.foo.bar

希望它会有所帮助。