Обновление: это было решено, и код был изменен с учетом изменений, которые я добавил. Я также настоятельно рекомендую прочитать комментарий ниже этого сообщения. Некоторые изменения приходят в IronRouter, о чем мы должны помнить.Meteor ironrouter - коллекция возвращает undefined, хотя я звоню waitOn()
Решающим вещь, чтобы добавить следующие строки в функции данных:
if(!this.ready()) {
return;
}
У меня возникли проблемы с IronRouter в моем приложении. Код ниже:
/**
* Project list view (all projects) with optional
* filter parameter for showing projects only by
* their category name.
*/
this.route('list', {
path: '/:_category_slug?',
template: 'template_main',
action: function() {
if(this.ready()) {
this.render();
}
},
waitOn: function() {
return [
Meteor.subscribe('projects'),
Meteor.subscribe('formations'),
Meteor.subscribe('categories')
];
},
data: function() {
if(!this.ready()) {
return;
}
if(this.params._category_slug) {
/**
* Building up the query given the category slug and the language
*/
var query = {};
query['slug.' + App.language] = this.params._category_slug;
/**
* Grab the category given the query
*/
var category = App.models.categories.findOne(query);
console.log(category);
return App.models.projects.find({}).fetch();
}
else {
return App.models.projects.find({}).fetch();
}
},
yieldTemplates: {
'components_header': {to: 'header'},
'views_list': {to: 'content'},
'components_footer': {to: 'footer'}
}
});
То, что я пытаюсь сделать, это получить категорию из категории слизняка, так что я могу получить доступ к его идентификатору, который нужен мне для другого запроса.
Проблема заключается в том, что когда я перезагружаю страницу, и приведенный выше путь соответствует, этот маршрут, кажется, запускается три раза, и при первом входе в переменную категории на консоли возвращается неопределенный, а затем еще два раза , фактическая категория распечатана.
Я ожидал бы, что функция waitOn() заполнила бы все категории к моменту достижения функции данных, поэтому я могу получить доступ к данным моей категории с запросом в первый раз, но этого не происходит.
Может ли кто-нибудь увидеть что-либо очевидное в моем коде, что может вызвать эту проблему, и почему маршрут запускается три раза?
Я использую последнюю версию IronRouter (iron: [email protected]) и Meteor (METEOR @ 09.2.2).
Благодарим за быстрый ответ. Это решило проблему. – matfin
Добавлены комментарии относительно самой последней версии «iron: router». – saimeunt
Привет, эта ссылка для github 404ing на данный момент :(Я с нетерпением ждал ее чтения ха-ха :) – lol