Javascript 流星-不再实时更新

Javascript 流星-不再实时更新,javascript,node.js,meteor,Javascript,Node.js,Meteor,我刚开始使用流星,到目前为止我很喜欢它。 我正在制作一个教程“todo”应用程序的变体,但是有我自己的定制。 到目前为止,我所做的改动大致如下: 将目录结构更改为客户端、服务器、公共、库/集合文件夹 通过collection2架构创建任务集合,而不是使用Tasks.insert(title=text等)动态创建 这就是问题所在。 这些是我的客户端/服务器文件- server.js Meteor.publish("tasks", function () { return Tasks.find(

我刚开始使用流星,到目前为止我很喜欢它。 我正在制作一个教程“todo”应用程序的变体,但是有我自己的定制。 到目前为止,我所做的改动大致如下:

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

  • 通过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>
    {{{#每个任务} {{>任务} {{/每个}}
因此,基本上和现在一样,我的服务器根据任务是否被检查(完成)进行排序,升序

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

为了更新它,我需要刷新页面,这不是我想要的

我是新手,我认为这与我的发布/订阅有关,但我似乎找不到任何在线帮助

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


非常感谢。

我想您对名为
tasks
的出版物/订阅和模板上循环的集合
tasks
感到困惑。当您希望在模板上呈现任务时,应该从帮助器返回该模板。考虑发布/订阅使数据库中正确的部分可用在客户端上,然后,从该部分检索正确的数据以显示。 通常,我为发布制定命名约定,如SQL查询,以便更容易解释

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

Meteor.subscribe("select-from-tasks");
你需要一个助手来返回正确的数据,就像我上面说的

Template.task.helpers({
    tasks: function() {return Tasks.find({}, {sort: {checked: 1}});}
});

哇!你是救命恩人。工作完美。如果我错了,请纠正我,服务器发布不应该在其发布方法中有任何sort/find etc函数?好吧,根据您的目标,您可以在服务器上执行任何您想要的操作(排序/筛选…)。在这种情况下,因为你要把所有东西都扔给客户,所以我就对客户进行排序