Dopdownlist заполняется ограниченными значениями вместо значений из общей коллекции

У меня есть выпадающий список в качестве фильтров, а затем общее количество сообщений с лимитом отображения только 4 одновременно, если не нажать кнопку «Загрузить еще», чтобы показать еще 4 записи. Проблема в том, что выпадающий список также загружает значения только из первых 4 записей.

Вот моя публикация

Meteor.publish('allJobs', function(limit){
 if(!limit){
 return Jobs.find();
}
 return Jobs.find({}, {limit: limit});
});

моя основная подписка в контроллере

  waitOn: function() {
  return Meteor.subscribe("allJobs",4,this.findOptions());
  },

помощники по шаблону

Template.jobsList.helpers({
'allJobs': function(){
  var filter ={};
  var category = Template.instance().selectedCategory.get();
  var city = Template.instance().selectedCity.get();
  var jtype = Template.instance().selectedJobType.get();
  if(jtype)
    filter.jtype = jtype;
  if(city)
    filter.city = city;
  if(category)
    filter.ccategory = category;
  return Jobs.find(filter);
     },
  'moreResults': function(){
    return !(Jobs.find().count() < Session.get("jobsLimit"));
  }
});

Template.jobsList.onRendered(function(){
    Session.setDefault("jobsLimit", 4);
    this.autorun(function(){
        Meteor.subscribe("allJobs", Session.get("jobsLimit"));
    });
});

Я попытался сделать еще одну подписку для этого, но это не сработало. Пожалуйста, помогите с лучшим решением.

шаблон

<template name="jobsList">
  <div class="col s12 filter-holder">
        <div class="col m4 s4 filter-box">
          {{> categoryFilter}}
        </div>
        <div class="col m4 s4 filter-box">
         {{> cityFilter}}
        </div>
</div>

<div class="col s12">
  <ul class="collection" id="listings">
    {{#each allJobs}}
    <li>
      {{> jobItem}}
   </li>
   {{/each}}
  </ul>
  {{#if moreResults}}
  <button class="load-more" id="showMoreResults" type="submit">Load More
    <i class="mdi-content-send right"></i>
  </button>
  {{/if}}
</div>
</template>

Пожалуйста, помогите, я застрял в этой ситуации

Обновленный файл JS

var limit = new ReactiveVar;

var filterAndLimitResults = function (cursor, limit) {

if (!cursor) {
    return [];
}

var chosenCategory = limit.get("chosenCategory");

var raw = cursor.fetch();

// filter category
var filtered = [];
if (!chosenCategory || chosenCategory == "") {
    filtered = raw;
} else {
    filtered = _.filter(raw, function (item) {
        return item.category === chosenCategory;
    });
}

if (limit) {
    filtered = _.first(filtered, limit);
}
return filtered;
};

// шаблон созданной функции

Template.jobsList.onCreated(function(){
limit.set(4);
limit.set("chosenCategory");
});

// Вспомогательная функция шаблона

Template.jobsList.helpers({
  "displayedJobs": function() {
  return filterAndLimitResults(Jobs.find(), (limit.get()));
   },
  'moreResults': function(){
    return !(Jobs.find().count() < limit.get());
      }
    });

Раскрывающаяся фильтрация кликов

Объявление в предоставленной функции

  Template.jobsList.onRendered(function(){
  limit.set(4);
  chosenCategory.set();
});

И событие click выглядит следующим образом

 "click .categoryselection": function(e, t){
        e.preventDefault();
      chosenCategory.set(chosenCategory.get());

Ответы на вопрос(2)

Ваш ответ на вопрос