我在Meteor中有两个集合,并尝试加入它们。 如collections / collections.js中所定义
Producers = new Mongo.Collection('producers');
Projects = new Mongo.Collection('projects');
从概念上讲,一个生产者有0到多个项目。 一个项目必须有一个制作人。 因此,Mongo中的每个Project文档(行)中都有一个ProducerID字段。 我用Mongo数据库播种了数据。
当我显示用于查看Projects的模板时,我希望它能够访问Producer的属性。
在Iron Router的配置中(在/app.js中),我有
Router.route('project', {
path: '/project/:name',
template: 'project',
waitOn: function() {
return Meteor.subscribe('ProjectInfo', this.params.name);
},
data: function() {
return Projects.find();
}
});
我在服务器上有两个发布(在/server/publish.js中):
Meteor.publish("ProjectInfo", function(projectName) {
return Projects.find( {name: projectName} );
});
Meteor.publish("ProducerInfo", function(producerid) {
return Producers.find( {_id: producerid});
});
问题1:如何加入? 我绝对不想将生产者数据放入每个项目中,因为当生产者数据发生变化时,更难以更新数据库。
问题2:为什么Iron Router需要一个“data:”字段,当它在waitOn中已经有一个订阅时?
data: function() {
return Projects.find();
}
提前致谢。
如何加入:我只给您链接到做此工作的软件包: 通过关系发布
并且您在发布时不需要数据字段,如果您的路由器加载正常并且您有waitOn发布然后在客户端,那么当您执行Producers.find()
或Projects.find()
时,所有数据都应该是可见的
虽然,waitOn需要一个数组,所以试试吧
return [Meteor.subscribe('ProjectInfo', this.params.name)];