2016-11-22 109 views
0

我想在服务器执行重要的繁重任务时,在客户端使用反应信息来禁用某些功能。流星:在服务器端变量的客户端显示维护页面

我试过使用一个发布,但即使客户端的订阅是在一个自动运行里面,它并没有更新该字段。我不确定使用出版物是否是最佳选择。

比方说,我有一个名为“IN_MAINTENANCE”的服务器变量,并且在客户端我想为维护页面加载特定模板,但从不允许用户更改此变量(该变量只能在服务器中定义侧)。

如何在不将任何数据存储在数据库中的情况下实现这一目标?

回答

0

我认为你的第一本能在做出版时是正确的。对数据更改的反应是服务器影响客户端的唯一方法。确保您的发布和订阅工作正常,然后在自动运行功能中,您可以将用户(和所有用户)带到维护页面。

1

很确定你必须使用它的数据库是一个适用于所有用户的被动更新。您可以使用设置变量,但这需要重新启动应用才能生效。你有代码可以重新调整用于此目的的This answer

+0

我想我的错误是使用Meteor.collection而不是将其保存在数据库中,但保存在数据库中是我想要避免的... – w3jimmy

0

这是一个Meteor脑筋急转弯吧? “没有存储任何东西在数据库”是有趣的一点。

比方说,你有一些出版物,所有客户端都得到,无论是登录还是不行,并有望恢复至少一个文档

Meteor.publish('default',function(){ 
    let query = ... 
    let options = ... 
    return MyCollection.find(query,options); 
}); 

您可以通过发信号给客户端刚回国没有什么:

Meteor.publish('default',function(){ 
    if (IN_MAINTENANCE) { 
    return; 
    } else { 
    let query = ... 
    let options = ... 
    return MyCollection.find(query,options); 
    } 
}); 

然后在客户端上你只是看看,看看订阅是准备好,但空的,基于交换机上的布局。

这个谜题有100个解决方案,这只是一个特别黑客的解决方案。