MongoDB数据未出现在Meteor模板中

时间:2015-12-11 04:48:25

标签: javascript mongodb meteor

我用Meteor开始了我的第一个应用程序,一切都很顺利,直到我发现一个集合不再显示在模板中。

这是我的代码:

App.js

Tasks = new Mongo.Collection("tasks");

if (Meteor.isServer) {
    Meteor.publish("tasks", function () {
        return Tasks.find();
    });
}

if (Meteor.isClient) {

Meteor.subscribe("tasks");

Template.body.helpers({
    tasks: function () {
        return Tasks.find({}, {sort: {createdAt: -1}});
    }
});
}

App.html

<template name="home">

    <h3>Open Tasks</h3>

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

</template>

<template name="displayTasks">

    <li>{{text}}</li>

</template>

Routes.js

Router.route("/", function () {
    this.render("Home");
});

我已经使用http://meteortips.com/second-meteor-tutorial/publish-subscribe/MeteorJS template not showing data, not appearing进行了双重检查,并且似乎我已正确完成所有操作。我也尝试更改名称并尝试在不同的模板上显示任务,但无济于事。 MongoDB确实有数据,我可以手动插入填充了text字段的条目(使用Mongo控制台)。

我还可以做什么来排除故障?回溯我的步骤没有帮助,我宁愿避免从头开始新的应用程序。

注意:我正在使用Iron Router。

1 个答案:

答案 0 :(得分:0)

默认情况下,子模板无权访问其父级帮助程序。在上面的代码中,已为tasks模板定义了body帮助程序,但home模板中需要它。试试这个:

Template.home.helpers({
  tasks: function () {
    return Tasks.find({}, {sort: {createdAt: -1}});
  }
});

请注意,可以明确地将帮助从父级传递给子级,如我对this question的回答所示,但这种情况并不常见。