【问题标题】:Meteor: show maintenance page in client side from a server side variableMeteor:从服务器端变量显示客户端的维护页面
【发布时间】:2016-11-23 02:39:44
【问题描述】:

我想在服务器执行一项重要的繁重任务时使用客户端的反应性信息来禁用某些功能。

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

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

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

【问题讨论】:

    标签: meteor


    【解决方案1】:

    非常确定您必须使用数据库才能使其成为适用于所有用户的反应更新。您可以使用设置变量,但这需要重新启动应用程序才能生效。 This answer 有你可以重新利用的代码。

    【讨论】:

    • 我想我的错误是使用 Meteor.collection 而不是将其保存在数据库中,但保存在数据库中是我试图避免的......
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这是 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 种解决方案,这只是一个特别骇人听闻的解决方案。

      【讨论】:

        猜你喜欢
        • 2012-12-22
        • 1970-01-01
        • 1970-01-01
        • 2012-04-25
        • 2014-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-03
        相关资源
        最近更新 更多