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

问题描述 投票:0回答:1

我们正在使用一个聊天应用程序,现在可以支持多个房间。 因此,我试图找出如何设置Iron-Router来正确支持此功能。 我设想此工作的方式是,当用户创建房间时,将推送到存储所有房间列表的数据库。 即

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

现在,在Iron-Router中,我希望有一条类似于以下设置的路线

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

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

routing meteor iron-router
1个回答
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});
    }
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.