MeteorJS - 监视服务器变量更改并更新模板值

Jua*_*anO 4 reactive-programming meteor

我有个疑问.不确定是否可能并且没有找到关于它的明确答案.

是否可以向服务器变量添加"观察者",以便在值更改时,我可以更新视图(客户端)?

假设我有一个var counter = 0和一个Timeout函数,每分钟更新一次计数器变量.

我想<span>{{counter}}</span>在客户端更新a .我需要在此服务器变量中添加一个"观察者"并使其具有反应性.

提前致谢!

stu*_*ilo 6

正确的方法是在集合中创建一个集合并存储该变量(即使这意味着您有一个包含一个文档的集合).

在服务器/客户端公共代码上:

Counter = new Mongo.Collection("counter");
Run Code Online (Sandbox Code Playgroud)

在客户端做一个帮手:

Template.myTemplate.helpers({
  counter: function () {
    return Counter.findOne();
  }
});
Run Code Online (Sandbox Code Playgroud)

在服务器上确保有一个计数器:

if (Counter.find().count() === 0) {
  Counter.insert({value: 0});
}
Run Code Online (Sandbox Code Playgroud)

然后,在服务器上递增计数器:

Counter.update({}, {$inc: {value: 1}});
Run Code Online (Sandbox Code Playgroud)

如果要跟踪多个计数器,可以使用类似的方法 - 只需在集合中插入多个计数器并按_id字段引用它们.