【发布时间】:2018-12-04 12:42:53
【问题描述】:
我处于 Meteor 项目的早期阶段,所有默认包都存在,包括自动发布。将 Collection Notes 添加到我的项目中工作正常并按预期显示。
当我添加第二个集合时。 Tags,复制相同的模式,总是空的。
所以我需要一些注意事项。我读过例如David Weldons list of common mistakes 但没有找到任何线索。
有两个模板显示两个集合,一个显示正常,另一个不显示。
集合的声明完全相同:
export const Tags = new Mongo.Collection('Tags');
export const Notes = new Mongo.Collection('Notes');
它们由相似、简单的模板显示,这些模板在我的 html 中引用:
<body>
<div>
{{#each tags}}
{{> tag}}
{{/each}}
</div>
<div>
{{#each notes}}
{{> note}}
{{/each}}
</div>
</body>
而且模板助手也是一样的:
Template.body.helpers({
notes() {
return Notes.find({}, { sort: { createdAt: -1}});
},
tags() {
let t = Tags.find({});
return t;
},
});
如果我在let t =... 之后中断,那么t.fetch() 会给出一个空数组。 (meteor mongo: db.Tags.find() 不是为空...)
从tags()-helper 返回一个数组会正确显示该数据,所以很明显我错过了Tags-collection。
这可能是时间问题吗?我认为助手是被动的,因此应该处理这些事情。还是我需要查看明确的订阅,iron:router 和 waitOn?
修复:
正如@Jankapunkt 所指出的,我忘记将集合添加到服务器端启动。
【问题讨论】:
-
哪个集合没有显示? “不显示查找”是什么意思?这是否意味着
console.log(NameOfCollection.find())不返回任何数据或屏幕上没有呈现任何内容? -
在
let t =...之后有一个中断,然后t.fetch()给出一个空数组。 -
您是否在启动时将
Tags导入到服务器和客户端? -
谢谢@Jankapunkt,就是这样。将您的评论变成答案,以便我接受。
标签: meteor collections