我想在服务器执行重要的繁重任务时,在客户端使用反应信息来禁用某些功能。流星:在服务器端变量的客户端显示维护页面
我试过使用一个发布,但即使客户端的订阅是在一个自动运行里面,它并没有更新该字段。我不确定使用出版物是否是最佳选择。
比方说,我有一个名为“IN_MAINTENANCE”的服务器变量,并且在客户端我想为维护页面加载特定模板,但从不允许用户更改此变量(该变量只能在服务器中定义侧)。
如何在不将任何数据存储在数据库中的情况下实现这一目标?
我想在服务器执行重要的繁重任务时,在客户端使用反应信息来禁用某些功能。流星:在服务器端变量的客户端显示维护页面
我试过使用一个发布,但即使客户端的订阅是在一个自动运行里面,它并没有更新该字段。我不确定使用出版物是否是最佳选择。
比方说,我有一个名为“IN_MAINTENANCE”的服务器变量,并且在客户端我想为维护页面加载特定模板,但从不允许用户更改此变量(该变量只能在服务器中定义侧)。
如何在不将任何数据存储在数据库中的情况下实现这一目标?
我认为你的第一本能在做出版时是正确的。对数据更改的反应是服务器影响客户端的唯一方法。确保您的发布和订阅工作正常,然后在自动运行功能中,您可以将用户(和所有用户)带到维护页面。
很确定你必须使用它的数据库是一个适用于所有用户的被动更新。您可以使用设置变量,但这需要重新启动应用才能生效。你有代码可以重新调整用于此目的的This answer。
这是一个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个解决方案,这只是一个特别黑客的解决方案。
我想我的错误是使用Meteor.collection而不是将其保存在数据库中,但保存在数据库中是我想要避免的... – w3jimmy