Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Routing Meteor,使用铁路由器进行动态路由_Routing_Meteor_Iron Router - Fatal编程技术网

Routing Meteor,使用铁路由器进行动态路由

Routing Meteor,使用铁路由器进行动态路由,routing,meteor,iron-router,Routing,Meteor,Iron Router,我们正在开发一个聊天应用程序,现在我们正在支持多个聊天室。所以我想弄清楚如何设置iron路由器来正确地支持它。我设想这种工作方式是,当用户创建一个房间时,会推送到存储所有房间列表的数据库。即 rooms={roomlist:['room1','room2'…]} 现在在Iron Router中,我想设置一个如下所示的路由 Router.map(function () { this.route('chatroom', { path: '/chatroom/:room_name' }

我们正在开发一个聊天应用程序,现在我们正在支持多个聊天室。所以我想弄清楚如何设置iron路由器来正确地支持它。我设想这种工作方式是,当用户创建一个房间时,会推送到存储所有房间列表的数据库。即

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

现在在Iron Router中,我想设置一个如下所示的路由

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

路由器只允许:room_名称与数据库中的一个roomlist房间匹配的路由。这可能吗?我将如何设置它?

我将有一个这样的房间集合

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

除了一件关键的事情外,这一切都很好。如果
Rooms.findOne({name:this.params.Rooms\u name})
没有返回我希望重定向页面的数据。也许我只是很了解这一点,这就是它正在做的,或者它需要稍微修改一下。也许可以尝试设置一个notFoundTemplate