我有以下途徑:如何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}});給我的錯誤:未定義的對象沒有memberIds屬性。我想這是因爲在做group.memberIds時,訂閱還沒有準備好,不是嗎?請提示。 謝謝。
你說的沒錯,如果路由器== flowRouter,錯的,如果路由器= IR –
@MichelFloyd沒了,還反模式與鐵路由器 – climbinghobo
他使用'waitOn'。這與'subscribe'和'data'一起都是[記錄](http://iron-meteor.github.io/iron-router/#route-specific-options),在i-r中很常用。 –