考虑以下情况:
有collection
名为Resources
,特殊用户可以在admin
网站上对其进行CRUD。
当普通用户访问该站点时,将根据对Resources
的订阅在浏览器中动态创建路由。
我们想暂停路由器查找,直到订阅的回调函数终止。否则,当直接访问/<dynamically-created-route>
时,将向用户显示“404”。
有一种简单的方法吗?
答案 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");
}
}
});