我正在关注 Meteor入门这本书,我真的没有走得太远,因为简单的错误阻止了我。
此时我已经开始在书中编写初始应用程序,我们在这本书中创建了一个新的全局连接。
Lists = new Meteor.Collection("lists");
然后我们将一些数据添加到该集合中。
lists.insert({Category:"DVDs", items: {Name:"Item Name",Owner:"me",LentTo:"Internet"}})
我可以通过检入控制台验证是否输入了数据
lists.find({}).count(); //returns 2
lists.findOne({Category:"DVDs"}) //returns the DVD category
但是,当我尝试在DOM中显示此内容时,不会显示任何内容。
<div id="categories-container">
{{> categories}}
</div>
<template name="categories">
<div class="title"><h3>My Stuff</h3></div>
<div id="categories">
{{#each lists}}
<div class="category">
{{Category}}
</div>
{{/each}}
</div>
</template>
这只显示我的标题。我在浏览器控制台或命令行控制台中没有出现任何错误。不知道如何诊断。
答案 0 :(得分:4)
我很确定原因是因为你有
Lists = new Meteor.Collection("lists");
但是你这样做:
lists.insert({Category:"DVDs", items: {Name:"Item Name",Owner:"me",LentTo:"Internet"}})
lists.find({}).count(); //returns 2
lists.findOne({Category:"DVDs"}) //returns the DVD category
但你应该做
Lists.insert({Category:"DVDs", items: {Name:"Item Name",Owner:"me",LentTo:"Internet"}})
Lists.find({}).count(); //returns 2
Lists.findOne({Category:"DVDs"}) //returns the DVD category
因为它区分大小写。然后在你的模板帮手中做一个Lists.find({}),你应该好好去。
答案 1 :(得分:2)
您是否定义了模板助手以显示您的内容?
您可能需要:
Template.categories.lists = function() {
return Lists.find({});
};
查看文档了解具体信息:
http://docs.meteor.com/#templates
对于类别的分面,您可能希望设置一个被动会话值。
答案 2 :(得分:0)
让您更轻松地阅读“探索流星”一书:如果您有可以比较两个目录的软件,请从并行目录中的git获取该书到您输入的内容。然后,当您遇到问题时,请转到终端中的目录和git checkout章节。现在,比较两个文件夹,你会看到你的拼写错误。
在互联网上快速学习不断变化的东西是一个艰难的过程。你发现很多教程只能使用一段时间。
但流星书不同。他们保持代码。我亲自打字,发现我的错误在更好的阅读中得到了解决(而且通常认为我不知道自己在做什么)。我通过它谈了两个二十多岁的人,并且他们也在很长一段时间里一直做出新的和创造性的标点符号或拼写选择。还有
meteor add xxx
meteor remove xxx
容易错过的命令。
但是请相信这个来源(假设你刚刚得到它,并且不是从一些旧的pdf开始工作)并且怀疑自己,仅仅是为了本教程。 :)
答案 3 :(得分:0)
通过在这里发表评论并阅读更多信息,原因是因为没有告诉meteor模板是定义的。
通过以下代码解决了这个问题:
Template.categories.lists = function (){
return Lists.find({}, {sort: {Category: 1}});
}
这告诉它查找Lists集合中的所有记录并按类别对它们进行排序。