Помощник шаблона не возвращает содержимое общей коллекции

#javascript #mongodb #meteor

#javascript #mongodb #метеор

Вопрос:

В ./server/server.js У меня есть

 if(Categories.find().count() === 0) {
    Categories.insert({name:'Fashion'});
    Categories.insert({name:'Travel'});
    Categories.insert({name:'Food'});
    Categories.insert({name:'Celebrities'});
}
  

В ./client/helpers.js У меня есть

 Template.categories.helpers({
    Categories:function() {
        return Categories.find();
    },
});
  

В ./categories.html У меня есть

 <template name='categories'>
  <ul>
    {{#each Categories}}
      <li id="categories"><a class="btn btn-default" href="/{{name}}">{{name}}</a></li>
    {{/each}}
  </ul>
</template>
  

В ./lib/collections.js У меня есть

 Categories = new Mongo.Collection('categories');
  

Когда я проверяю содержимое базы данных категорий после запуска ‘meteor mongo’, коллекции содержат категории, определенные в ./server/server.js , но вспомогательная функция в ./client/helpers.js ничего не возвращает. Когда я добавляю функцию в этот файл, которая возвращает количество категорий

 Categories.find().count()
  

и отобразите это в шаблоне, он показывает ‘0’. В чем проблема? Клиент и сервер должны совместно использовать коллекцию, поскольку коллекция инициализирована в папке lib.

Комментарии:

1. Вам необходимо опубликовать коллекцию на сервере и подписаться на публикацию на клиенте. Вы это сделали?

2. @JeremyS. Я не думал, что мне нужно, потому что и клиент, и сервер имеют доступ к коллекции через каталог lib…

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

4. @herrshuster спасибо, это сработало

5. @JeremyS. Спасибо за совет. Я не думал делать это, потому что в руководстве, которому я следую, не было кода для этого в их репозитории. Это сработало, и я счастлив. Приветствия!