我们正在开发一个聊天应用程序,我们现在正支持多个房间。所以我试图找出如何设置铁路由器来正确支持这一点。我设想这种工作的方式是,当用户创建一个房间时,会推送到数据库,其中存储了所有房间的列表。即。
rooms = {roomlist: ['room1', 'room2' ...]}
现在在Iron-Router中,我希望有一条如下设置的路线
Router.map(function () {
this.route('chatroom', {
path: '/chatroom/:room_name'
});
});
并且路由器仅允许:room_name与数据库中的一个房间列表房间匹配的路由。这是可能的,我将如何设置它?
答案 0 :(得分:1)
我会有像这样的房间集合
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});
}
});
});