我在流星有两个集合,并试图加入它们。如收藏品/ collections.js中所定义的加入使用铁路路由器的流星集合
Producers = new Mongo.Collection('producers');
Projects = new Mongo.Collection('projects');
从概念上讲,一个生产者具有0到多个项目。一个项目必须有一个生产者。因此,ProducerID字段位于Mongo中的每个Project文档(行)中。我用数据为Mongo数据库播种。
当我显示用于查看Projects的模板时,我希望它可以访问Producer的属性。
铁路由器的配置(在/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中已经有一个Subscribe时?
data: function() {
return Projects.find();
}
在此先感谢。
我看你一直在广告'cottz:发布与 - relationsh',但它在一个dubio我们说。 [1](https://github.com/svasva/meteor-publish-with-relations/issues/25),[2](https://github.com/Goluis/cottz-publish/issues/2)。 [reywood:publish-composite](https://github.com/englue/meteor-publish-composite/issues/6)是一个更强大的软件包。另见[流星中的反应性连接](https://pinboard.in/u:dandv/b:037c63e28cb7)。 – 2015-02-11 23:59:00
每时每刻都有一个关于连接的问题,这就是我现在使用的,但是我会查找你发布的包 – Sindis 2015-02-12 00:17:45