Meteor集合在模板中为空

Meteor集合在模板中为空,meteor,collections,Meteor,Collections,我正处于Meteor项目的早期阶段,所有默认包都存在,包括autopublish。在我的项目中添加一个集合Notes,效果很好,并按预期显示 当我添加第二个集合时标记,复制相同的模式,它始终为空 所以我需要一些指示,告诉我要注意什么。我读过,但没有发现任何线索 有两个模板显示两个集合,一个显示精细,另一个不显示 集合的声明完全相同: export const Tags = new Mongo.Collection('Tags'); export const Notes = new Mongo.C

我正处于Meteor项目的早期阶段,所有默认包都存在,包括autopublish。在我的项目中添加一个集合
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';