Meteor客户端只发布订阅

时间:2014-07-06 21:53:34

标签: javascript meteor

Meteor具有这种实时模板功能,当数据发生变化时,它可以自动更新页面中的HTML。我该如何仅使用此功能客户端?使用伪代码,最简单的例子可能是时钟。实际上我想做这样的事情

<template name="clock">
  <div>{{time}}</div>
</template>

然后完全在客户端我有效地希望能够做这样的事情

function publishTheTime() {
   var timeStr = (new Date()).toString();
   Meteor.somePublishFunction({time: timeStr});
}
setTimeout(publishTheTime, 5000);

让meteor更新html中的时间。

一旦我开始工作,我想更进一步。想象一下,我有城市的钟表。您可以将其视为Cities的数据库,其中每个_id是城市的名称,唯一的其他字段是time。再次100%在客户端,我希望能够显示N个国家的实时更新时间。像

这样的东西
<template name="cities">
  <div class="cities">
    {{#each cities}}
      {{> city}}
    {{/each}}
  </div>
</template>

<template name="city">
  <div class="city">
    <div>name: {{_id}}</div>
    <div>time: {{time}}</div>
  </div>
</template>

我可以100%在客户端上执行此操作吗?不需要完整的数据库,也不需要在服务器上,但我仍然需要选择城市,如

Cities.find({_id: {$in: ["Vancover", "New York City", "London"]}})

和所有类似的东西。

1 个答案:

答案 0 :(得分:1)

您要查找的内容称为非托管本地收藏。它是您在客户端上定义的与服务器不同步的集合,但在其他方面保留与普通集合相同的属性。有关详细信息,请仔细查看文档的collections section

您可以这样做:

Cities = new Meteor.Collection(null);
Cities.insert({_id: 'Seattle', time: new Date});
console.log(Cities.findOne());