Meteor集合在模板中为空
我正处于Meteor项目的早期阶段,所有默认包都存在,包括autopublish。在我的项目中添加一个集合Meteor集合在模板中为空,meteor,collections,Meteor,Collections,我正处于Meteor项目的早期阶段,所有默认包都存在,包括autopublish。在我的项目中添加一个集合Notes,效果很好,并按预期显示 当我添加第二个集合时标记,复制相同的模式,它始终为空 所以我需要一些指示,告诉我要注意什么。我读过,但没有发现任何线索 有两个模板显示两个集合,一个显示精细,另一个不显示 集合的声明完全相同: export const Tags = new Mongo.Collection('Tags'); export const Notes = new Mongo.C
Notes
,效果很好,并按预期显示
当我添加第二个集合时<代码>标记,复制相同的模式,它始终为空
所以我需要一些指示,告诉我要注意什么。我读过,但没有发现任何线索
有两个模板显示两个集合,一个显示精细,另一个不显示
集合的声明完全相同:
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>
如果在let t=…
之后中断,则t.fetch()
将给出一个空数组。(meteor mongo:db.Tags.find()
不是空的…)
从tags()
-helper返回一个数组可以正确地显示该数据,因此tags
-collection显然遗漏了这一点
这可能是一个时机问题吗?我认为帮手是被动的,因此应该处理这些事情。或者我需要查看明确的订阅,iron:router
和waitOn
修正:
正如@Jankapunkt所指出的,我忘记将集合添加到服务器端启动。为了成功地将mongo集合的数据自动发布到客户端,您需要将集合同时导入服务器和客户端(最好在启动时) 示例 导入/MyCollection.js server/main.js client/main.js 但是,如果删除
autopublish
包,则需要在服务器端添加发布,在客户端添加订阅
进一步阅读:
哪个集合未显示?“不显示”是什么意思?这是否意味着
console.log(NameOfCollection.find())
不返回任何数据,或者屏幕上没有显示任何内容?在let t=…
之后有一个中断,然后t.fetch()
给出一个空数组。启动时是否将标记导入服务器和客户端?谢谢,@Jankapunkt,就是这样。将您的评论转换为答案,以便我可以接受。我想这意味着只有客户端新集合(“名称”)
(即使有“名称”)才创建minimongo集合,但无法连接到服务器端相应的集合。我可能在这种情况下会出现错误,但这可能不可能,我认为它是为了让您在服务器和客户端上创建不同的同名集合。我只是现在没有用例。
Template.body.helpers({
notes() {
return Notes.find({}, { sort: { createdAt: -1}});
},
tags() {
let t = Tags.find({});
return t;
},
});
export const MyCollection = new Mongo.Collection('mycollection');
import { MyCollection } from '../imports/MyCollection';
import { MyCollection } from '../imports/MyCollection';