Meteor 如何在服务器端使用反应式VAR

Meteor 如何在服务器端使用反应式VAR,meteor,Meteor,我想在服务器端使用一个反应式计数器var。但我猜不出不使用集合怎么做。 我预计{{count}}将在服务器计数变量更改后更新,而不刷新页面,或者如何向客户端发送计数已更改 <body> {{> test }} </body> <template name="test"> {{count}} </template> 服务器: var count=0 Meteor.startup(function () { Meteor.set

我想在服务器端使用一个反应式计数器var。但我猜不出不使用集合怎么做。 我预计{{count}}将在服务器计数变量更改后更新,而不刷新页面,或者如何向客户端发送计数已更改

<body>
  {{> test }}
</body>

<template name="test">
  {{count}}
</template>
服务器:

var count=0

Meteor.startup(function () {
  Meteor.setInterval(function() {
    count++
  }, 1000)
});

Meteor.methods({
  count: function() {
    return count
  }
})
我的密码在

我想看看我的期望:

客户:

Meteor.subscribe('count')

Template.test.helpers({
  count: function () {
   return Counter.findOne().count
  }
});
常见的:

Counter = new Mongo.Collection('count')
服务器:

Meteor.publish('count', function() {
  return Counter.find()
})

Meteor.startup(function () {
  if(Counter.find().count() === 0) {
    Counter.insert({count: 0})
  }

  Meteor.setInterval(function() {
    Counter.update({}, {$inc: {count: 1}})
  }, 1000)
});

示例取决于您计划如何扩展应用程序。如果计划扩展到多个服务器实例,则不能依靠服务器自动共享信息。在这种情况下,最好创建一个名为“ApplicationState”的集合。然后,应用程序的每个实例都可以使用一致状态,并且可以使用内置订阅


如果计划仅使用单个服务器实例,则应签出跟踪程序上的文档:。这允许您定义对数据的自定义依赖项。我还没有机会玩它,但我很确定您可以创建类似于订阅的东西:

您的代码不能按您希望的方式工作,因为常规的纯变量不是反应式数据源。文档在这里有一个反应式数据源的列表——因此,为了使您的示例能够工作,您可能希望使用Session或——但是这些仅在客户端工作,因此它们在这里不会帮助您


您最好创建一个手动发布功能,并从客户端订阅它(或者像其他人建议的那样,使用一个集合,它也可以跨多个服务器工作)。希望有帮助

问题是什么?你到底想做什么?从我看到的情况来看,你每秒递增一个计数,然后在客户端上获得它,它就工作了。我希望{count}}会在服务器上的count var更改后更新,而不刷新页面。或者如何发送一个计数已更改的客户端?我肯定会使用订阅。。。让我检查一下。我已经添加了其他方法来获得我想要的,但我想通过meteor服务器方法来管理更改。感谢您的详细解释,这将对我在该功能中的决策非常有用。现在我正在和Meteor玩我的简单项目,以获得我能做什么以及如何做。谢谢,我现在明白了。我已经找到了如何替换publish count软件包,但以前我开始使用错误的方法。我的问题是。
Meteor.publish('count', function() {
  return Counter.find()
})

Meteor.startup(function () {
  if(Counter.find().count() === 0) {
    Counter.insert({count: 0})
  }

  Meteor.setInterval(function() {
    Counter.update({}, {$inc: {count: 1}})
  }, 1000)
});