Meteor,使用Iron-Router进行动态路由

时间:2014-06-25 15:16:13

标签: routing meteor iron-router

我们正在开发一个聊天应用程序,我们现在正支持多个房间。所以我试图找出如何设置铁路由器来正确支持这一点。我设想这种工作的方式是,当用户创建一个房间时,会推送到数据库,其中存储了所有房间的列表。即。

rooms = {roomlist: ['room1', 'room2' ...]}

现在在Iron-Router中,我希望有一条如下设置的路线

Router.map(function () {
  this.route('chatroom', {
    path: '/chatroom/:room_name'
  });
});

并且路由器仅允许:room_name与数据库中的一个房间列表房间匹配的路由。这是可能的,我将如何设置它?

1 个答案:

答案 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});
    }
  });
});