正如标题所说,我需要知道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的引用;
无论如何都是寻求帮助。
答案 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
希望它会有所帮助。