Meteor:从服务器端变量显示客户端的维护页面

时间:2016-11-22 11:44:53

标签: meteor

我希望在服务器执行一项重要的繁重任务时,在客户端使用被动信息来禁用某些功能。

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

假设我有一个名为“IN_MAINTENANCE”的服务器变量,在客户端我想为维护页面加载一个特定的模板,但绝不允许用户更改它(该变量只应在服务器端定义) )。

如何在不在数据库中存储任何内容的情况下实现此目的?

3 个答案:

答案 0 :(得分:1)

非常确定您必须使用数据库才能成为适用于所有用户的响应式更新。您可以使用设置变量,但这需要重新启动应用才能生效。 This answer包含您可以为此重新调整用途的代码。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这是Meteor脑筋急转弯吗? "没有在db"中存储任何东西是有趣的。

让我们假设您有一些所有客户都会收到的出版物,无论是否已登录,并且预计会返回至少一个文档

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个解决方案,这只是一个特别笨拙的解决方案。