如何延迟铁路由器路由查找

时间:2015-09-03 20:32:39

标签: node.js meteor routing iron-router

考虑以下情况:

collection名为Resources,特殊用户可以在admin网站上对其进行CRUD。

当普通用户访问该站点时,将根据对Resources的订阅在浏览器中动态创建路由。

我们想暂停路由器查找,直到订阅的回调函数终止。否则,当直接访问/<dynamically-created-route>时,将向用户显示“404”。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:0)

这样的东西?您可以基于资源ID创建动态路由,等待具有id值的预订,然后根据您是否可以使用id访问资源来进行路由。这假设您在服务器代码中也有正确的发布设置。

Resources = new Mongo.Collection("resources");

Router.route("/resources/:_id", {
  name: "resources",
  waitOn: function() {
    // Waits on the subscription
    return Meteor.subscribe("resources", this.params._id);
  },
  action: function() {
    // Should only return the resource you subscribed to unless you
    // subscribe to resources in another part of your application
    var resource = Resources.findOne({});
    if (resource) {
      // The resource exists and the user is able to access it.
      this.render("resourceTemplate", {
        data: {
          resource: resource
        }
      });
    }
    else {
      Router.go("/404");
    }
  }
});