Связанные предметы в Метеор

У меня есть группы и предметы, и предметы относятся к конкретным группам. На "странице подробностей" группы я хочу видеть все элементы, принадлежащие определенной группе.

Я пробовал это

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}),
   ];
 });
Другие вопросы по тегам