Связанные предметы в Метеор
У меня есть группы и предметы, и предметы относятся к конкретным группам. На "странице подробностей" группы я хочу видеть все элементы, принадлежащие определенной группе.
Я пробовал это
Router.route('/group/:_id', {
name: 'group',
template: 'group',
waitOn: function () {
return this.subscribe("groups", this.params._id);
},
data: function () {
return {
group: Groups.findOne(this.params._id);
items: Items.find({groupId: this.params._id}),
}
}
});
Но как должен выглядеть waitOn, если он должен одновременно ожидать конкретную группу и элементы, принадлежащие этой группе?
2 ответа
Вы можете вернуть массив подписок для ожидания:
waitOn: function () {
return [
Meteor.subscribe("groups", this.params._id),
Meteor.subscribe("items", this.params._id)
]
}
Вы можете иметь другую функцию публикации
Meteor.publish('relatedItems', function (groupId) {
return Items.find({groupId: groupId});
});
и ждать двух подписок
waitOn: function () {
return [
Meteor.subscribe("groups", this.params._id),
Meteor.subscribe("relatedItems", this.params._id)
];
},
или вы можете добавить к своей существующей публикации, как это:
Meteor.publish('groups', function (groupId) {
return [
Groups.find({_id: groupId}),
Items.find({groupId: groupId}),
];
});