Эксклюзивная подписка на шаблон Meteor

У меня есть два разных шаблона на одном маршруте. Однако оба возвращают ряд элементов из единой коллекции, когда я

Template.stepOneSelect.onCreated(function() {
  var instance = this;
  instance.autorun(function() {
    var subsciption = instance.subscribe('stepOne');
  });
  instance.occupations = function() {
    return Occupations.find();
  }
});

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

Так что мне нужно

Template.stepOneSelect.helpers({
    stepOneTitles: function () {
        return Template.instance().occupations();
    }
});

чтобы вернуть занятия только из этого шаблона, и я получаю все занятия с маршрута

// ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

У меня есть две коллекции, CareerPaths и Occupations. CareerPaths имеет такие поля, как occupationOneId, который является _id профессии. Было бы легко, если бы у меня было поле в каждой профессии, в котором указано, на каком этапе пути карьеры она находится, но одна профессия может находиться на разных этапах пути карьеры. Поэтому мне нужно возвращать профессии на основе CareerPaths. Маршрут состоит из двух разделов, один со списком CareerPaths с ограничением (только 10 за раз), а другой раздел должен содержать ВСЕ профессии с первого шага карьерного пути и т. д. Я ничего не нашел в publishComposite только для возврата детей публикации.


person 416serg    schedule 15.09.2015    source источник
comment
этот вопрос уже задавался. Я постараюсь предоставить ссылку, когда найду время, чтобы раскопать ее, но посмотрите сами, если вам нужен быстрый ответ.   -  person Christian Fritz    schedule 16.09.2015
comment
@ChristianFritz спасибо, Кристиан, я пытался найти ответ, который, я уверен, существует, но мне не повезло :( был бы очень признателен за ссылку   -  person 416serg    schedule 16.09.2015
comment
stackoverflow .com/questions/12632452/   -  person Christian Fritz    schedule 16.09.2015
comment
@ChristianFritz Я обновил вопрос, потому что не смог найти на него ответ по предоставленным ссылкам :(   -  person 416serg    schedule 16.09.2015
comment
Я бы не подумал, что то, о чем просят, возможно без помощника, который выполняет запрос, который может фильтровать то же самое, что и функция публикации, потому что любые запросы, которые вы запускаете в коллекции, выполняются на экземпляре minimongo клиента, в котором есть все, что предоставляется сервер от издателей. Могут ли ваши помощники шаблонов фильтровать с теми же условиями, что и ваша функция публикации? Если нет, то я, вероятно, не понимаю, чего вы пытаетесь достичь.   -  person Lucas Blancas    schedule 16.09.2015
comment
@LucasBlancas вот в чем проблема. они не могут фильтровать так же, как функция публикации, поскольку публикация (сервер) имеет доступ ко всем моим карьерным путям, а клиент имеет доступ только к первым 10. клиент, и отображать только лимит, а остальные иметь возможность фильтровать нужные профессии, что, похоже, замедлит производительность в случае, когда у меня будет много CareerPaths, в любом случае спасибо за ваш отзыв!   -  person 416serg    schedule 17.09.2015


Ответы (1)


Если я правильно понимаю, вы пытаетесь отобразить только данные, опубликованные определенной подпиской. Самый простой способ сделать это — переместить запрос, используемый в публикации, в клиент-серверный код, а затем вызвать запрос как из публикации, так и из запроса на стороне клиента.

person Gaelan    schedule 23.09.2015