加载模板时出现Meteor.js错误

时间:2014-11-18 07:35:16

标签: javascript mongodb meteor

我的应用程序上的一切正常(包括loadingTemplate,只在实际需要时才被路由),直到我决定在我的主页模板上创建一个简单的列表,以显示名为Rooms的Mongo集合上的每个文档,其标题。

我做了什么

HTML:

<template name="roomsList">
  <div>
    {{#each rooms}}
      {{> roomsListItem}}
    {{/each}}
  </div>
</template>

<template name="roomsListItem">
    <ul>
        <li>{{title}}</li>
    </ul>
</template>

JS:

Template.roomsList.helpers({
    rooms: function() {
        return Rooms.find();
    }
});

正如你所看到的,非常基本的东西。 JS应该返回Rooms集合上的所有文档(没有很多),以便{{#each}}代码块可以迭代它们并捕获所有标题以生成<ul>。我在主页模板上添加{{> roomsList}}

我正在使用的套餐

我在其他#meteor问题中看到了这一点,所以我会继续在这里列出:

  1. accounts-password 1.0.4帐户密码支持
  2. accounts-ui 1.1.3将登录小部件添加到应用程序的简单模板
  3. iron:路由器1.0.1专为Meteor设计的路由
  4. meteor-platform 1.2.0在您的应用中包含一组标准的Meteor包
  5. sacha:spin 2.0.4 Meteor的简单微调器包
  6. 发生了什么

    好吧,首先,这是bash错误消息:

    I20141118-05:25:21.855(-2)? Exception from sub k7PEn4QcT9McjF8tw ReferenceError: rooms is not defined
    I20141118-05:25:21.856(-2)?     at null._handler (app/server/publications.js:2:9)
    I20141118-05:25:21.856(-2)?     at maybeAuditArgumentChecks (packages/ddp/livedata_server.js:1599)
    I20141118-05:25:21.856(-2)?     at _.extend._runHandler (packages/ddp/livedata_server.js:943)
    I20141118-05:25:21.857(-2)?     at _.extend._startSubscription (packages/ddp/livedata_server.js:769)
    I20141118-05:25:21.857(-2)?     at _.extend.protocol_handlers.sub (packages/ddp/livedata_server.js:582)
    I20141118-05:25:21.860(-2)?     at packages/ddp/livedata_server.js:546
    

    我怀疑第一行正在引起所有其他行,但我无法弄清楚它告诉我的是什么。我以相同的方式在应用程序的其他部分调用集合,没有问题。所以我不知道是什么原因引起了这个问题!

    其次,现在我的主页模板将无法加载。所有加载的都是加载模板,它在Router.settings上声明。它为每个URL加载,并且永远不会重定向到任何内容。我尝试登录并注销。

    最后,列表甚至不起作用,因为我已将{{&gt; roomsList}}放在加载模板上,只是为了查看是否正常工作而不是。

    我该如何解决这个问题?

    更新 我在评论中要求共享订阅和发布的代码,因为可能存在一些拼写错误。我不认为有,因为我在代码的另一部分访问集合没有问题,但在这里他们是:

    出版物(在/服务器上):

    Meteor.publish("rooms", function() {
        return rooms.find();
    });
    

    订阅(在/ lib上):

    Router.configure({
        layoutTemplate: "layout",
        loadingTemplate: "loading",
        notFoundTemplate: "notFound",
        waitOn: function() { return Meteor.subscribe('rooms'); }
    });
    

1 个答案:

答案 0 :(得分:1)

在您的发布代码中,您必须使用会议室而不是会议室,这是您的收藏名称。喜欢这个

 Meteor.publish("rooms", function() {
   return Rooms.find();
});
相关问题