我有收集所謂的客房,現在,我想這取決於用戶在哪裏上的應用程序,所以發佈室的不同子集,這是我腦子裏想的:如何使用不同的數據子集發佈相同的集合?
Meteor.publish('roomList', function() {
return Rooms.find({}, {fields: {'roomId': 1, 'playerCount': 1, 'isPlaying': 1}});
});
Meteor.publish('roomInfo', function(_id) {
return Rooms.find({_id: _id}, {fields: {'players': 1}});
})
Meteor.publish('roomGame', function(_id) {
return Rooms.find({_id: _id}, {fields: {'game': 1}});
})
我不想當用戶剛剛瀏覽房間時扼殺發送玩家信息的連接,但是,當用戶進入房間時,我想訂閱他到roomInfo,以便他可以看到誰在房間中,當房間正在玩時,訂閱roomGame其中包含遊戲信息。 這是我訂閱的方式(在這一點上,用戶已經訂閱了roomList)。
Router.route('/sala/:_id', {
name: 'roomLobby',
waitOn: function() {
return this.subscribe('roomInfo', this.params._id);
},
data:function(){
var r = Rooms.findOne(this.params._id);
console.log(r.players);
return r;
}
});
但是,r.players總是以未定義的方式出現。
我錯過了什麼?
如果您將'this.subscribe'替換爲'Meteor.subscribe',它會起作用嗎? –
它仍然返回undefined。 –
可能與http://stackoverflow.com/questions/12632452/publishing-subscribeing-multiple-subsets-of-the-same-server-collection/12684186有關 – Poyi