我的应用程序上的一切正常(包括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问题中看到了这一点,所以我会继续在这里列出:
发生了什么
好吧,首先,这是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'); }
});
答案 0 :(得分:1)
在您的发布代码中,您必须使用会议室而不是会议室,这是您的收藏名称。喜欢这个
Meteor.publish("rooms", function() {
return Rooms.find();
});