У меня есть следующий маршрут:как waitOn данные готов, используя железо-маршрутизатор и публиковать композит
this.route('groupPage', {
path: '/group/:_groupId',
waitOn: function(){
return Meteor.subscribe("groupPage", this.params._groupId);
},
data: function() {
var group = Groups.findOne({_id: this.params._groupId});
var members = Meteor.users.find({_id : {$in: group.memberIds}}); ******** ISSUE HERE******
return {
group: group,
members: members,
}; }});
и следующая публикация:
Meteor.publishComposite('groupPage', function(groupId, sortOrder, limit) {
return {
// return the group
find: function() {
if(this.userId){
var selector = {_id: groupId};
var options = {limit: 1};
return Groups.find(selector, options);
}
else{
return ;
}
},
children: [
{ // return the members
find: function(group) {
var selector = {_id: {$in: group.memberIds} };
return Meteor.users.find(selector);
}
}
]}}) ;
Теперь мой вопрос заключается в следующем: когда родственном страница рендеринга для первого нет проблем, но когда я реализую групповую страницу, просмотрите строку: var members = Meteor.users.find ({_ id: {$ in: group.memberIds}}); дает мне ошибку: undefined object не имеет свойства memberIds. Я думаю, это потому, что подписка еще не готова при выполнении group.memberIds, не так ли? Пожалуйста, намек. Спасибо.
Вы правы, если маршрутизатор == flowRouter, неправильно, если маршрутизатор = я –
@MichelFloyd Нету, все еще антишаблоном с iron-router – climbinghobo
Он использует 'waitOn'. Это наряду с 'subscribe' и' data' являются [документально] (http://iron-meteor.github.io/iron-router/#route-specific-options) и довольно часто используются в i-r. –