#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. Спасибо за совет. Я не думал делать это, потому что в руководстве, которому я следую, не было кода для этого в их репозитории. Это сработало, и я счастлив. Приветствия!