我正在尝试为我正在处理的项目添加一些常规应用程序配置,我决定将其保存在数据库中,以便我可以在其他地方更改它们,如果应用程序出现问题,主要原因我这样做是为了添加一个维护模式'每当我对应用程序进行更改或在部署期间或类似的情况下,我尝试这样做的方式是使用此代码设置的变量:
Meteor.startup(function() {
Tracker.autorun(function () {
Meteor.subscribe('configuracion', function(){
configuracionGeneral = Configuracion.findOne({});
})
});
});
然而,当我尝试像铁路由器一样使用它时:
Router.onBeforeAction(function () {
console.log(configuracionGeneral);
if(configuracionGeneral.vynoHabilitado=='habilitado'){
this.next();
}else{
//Send to maintenance template
}
});
我可以使用变量configuracionGeneral而没有问题,我在控制台上看到它,但是当我在数据库中更改它的值时,变量不会被动反应,所以我我想知道怎样才能更改这个变量'被动地'。
答案 0 :(得分:2)
我认为问题在于according to the docs:
如果run函数的下一次迭代订阅相同的 记录集(相同的名称和参数),Meteor足够聪明,可以跳过 浪费的取消订阅/重新订阅。
因此,您的订阅不会重新运行,并且不会触发您的回调。您可以尝试使用David Weldon的common mistakes:
这种方法Meteor.startup(function() {
var handle = Meteor.subscribe('configuracion');
Tracker.autorun(function () {
if (handle.ready())
configuracionGeneral = Configuracion.findOne();
});
});