我们正在使用一个聊天应用程序,现在可以支持多个房间。 因此,我试图找出如何设置Iron-Router来正确支持此功能。 我设想此工作的方式是,当用户创建房间时,将推送到存储所有房间列表的数据库。 即
rooms = {roomlist: ['room1', 'room2' ...]}
现在,在Iron-Router中,我希望有一条类似于以下设置的路线
Router.map(function () {
this.route('chatroom', {
path: '/chatroom/:room_name'
});
});
并且路由器仅允许:room_name与数据库中房间列表房间之一匹配的路由。 这可能吗,我将如何设置?
我会像这样收集房间
Rooms = new Meteor.Collection("rooms");
然后,当您插入新房间时,为其命名。
也不要忘记发布您的单人房
Meteor.publish("singleRoom", function(room_name){
return Rooms.find({name: room_name});
})
然后在您的路线中使用
Router.map(function () {
this.route('chatroom', {
path: '/chatroom/:room_name',
waitOn: function(){
return Meteor.subscribe("singleRoom", this.params.room_name);
},
data: function(){
return Rooms.findOne({name: this.params.room_name});
}
});
});