流星 - 不再实时更新

时间:2016-01-04 01:00:47

标签: javascript node.js meteor

刚开始使用Meteor,我很喜欢它。 我正在修改教程" todo"应用程序,但我自己的自定义。 或多或少我到目前为止做出的改变是:

  • 将目录结构更改为客户端,服务器,公共,lib /集合文件夹

  • 通过collection2架构创建任务集合,而不是使用Tasks.insert(title = text等等)动态创建

所以问题。 这些是我的客户端/服务器文件 -

server.js

Meteor.publish("tasks", function () {
return Tasks.find({}, {sort: {checked: 1}});
});

client.js

// This code only runs on the client
Meteor.subscribe("tasks");

Template.task.events({
"click .toggledone": function () {
// Set the checked property to the opposite of its current value
Tasks.update(this._id, {
  $set: {checked: ! this.checked}
});
},
"click .delete": function () {
Tasks.remove(this._id);
}
});

它显示在标准的html中

  <ul>
  {{#each tasks}}
    {{> task}}
  {{/each}}
</ul>

基本上就像现在一样,我的服务器根据是否检查(已完成),升序来对任务进行排序。

它当前工作,当我单击列表上的任务时,它变为红色(我的配置)并注册为已完成,但列表不会像原来那样自动排序(在我更改目录之前)

要更新它,我需要刷新不是我想要的页面。

我是新手,我认为这与我的发布/订阅有关,但我似乎无法找到任何可以帮助我上网的内容。

有人能指出我正确的方向吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

我认为您对名为using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync("ms-appdata:///local/file.txt"); 的发布/订阅与模板上的循环的集合tasks感到困惑。如果要在模板上呈现任务,则应从帮助程序返回该任务。考虑发布/订阅使客户端上的数据库的正确部分可用,然后从该部分检索要显示的正确数据。

通常,我为SQL查询创建发布的命名约定,因此更容易解释

tasks

然后,

Meteor.publish("select-from-tasks", function () {
    return Tasks.find({});
});

你需要有一个助手才能返回正确的数据,就像我上面所说的那样

Meteor.subscribe("select-from-tasks");