Meteor FlowRouter,路由依赖于订阅时如何获取数据
我正在为我的应用程序编写许可证验证部分,并且仅当用户的许可证已过期时,才希望将用户重定向到续订页面 我正在使用FlowRouter和Blaze 我的所有经过身份验证的路由都在一个组中:Meteor FlowRouter,路由依赖于订阅时如何获取数据,meteor,meteor-blaze,flow-router,Meteor,Meteor Blaze,Flow Router,我正在为我的应用程序编写许可证验证部分,并且仅当用户的许可证已过期时,才希望将用户重定向到续订页面 我正在使用FlowRouter和Blaze 我的所有经过身份验证的路由都在一个组中: let authenticated = FlowRouter.group({ triggersEnter: [checkAuthenticated, checkSubscription] }); 然后我检查订阅是否有效,如下所示: const checkSubscription = function(con
let authenticated = FlowRouter.group({
triggersEnter: [checkAuthenticated, checkSubscription]
});
然后我检查订阅是否有效,如下所示:
const checkSubscription = function(context){
let path = FlowRouter.current().path;
if (!Meteor.userId()){
return;
}
const sub = new Subscription();
if (sub.isInvalid() && path !=="/manage-practice/subscription"){
FlowRouter.go("/manage-practice/subscription");
}
};
我的类订阅使用的集合只能在用户登录后加载。我的问题是,路由器通常在加载数据之前触发此重定向
是否有解决此问题的最佳实践方法 使用触发器重定向 我不确定这是否是“最佳实践”,但一种方法是在登录事件上使用Flow Router
重定向功能
您可以在以下位置看到示例:和
初始登录路径(使用Accounts.onLogin();
)可以是在评估用户集合时的通用“加载…”模板。在回调中,您可以使用自定义重定向函数重定向到应用程序中请求的页面,或将用户重定向到您的“/manage practice/subscription”路径
FlowRouter.wait()
我必须承认我以前不熟悉第二个选项,但我刚刚遇到了FlowRouter.wait()
。这有助于延迟默认路由过程,直到完成其他评估。我怀疑只有当用户直接登录到您的authenticated
路由组中的页面时,这可能才相关
文档:您是否使用AccountsTemplates?我提出了一个带有AccountsTemplates和alanning的解决方案:在执行任何路由之前等待角色的角色。这很难看,但很管用。嗨,大卫,我以前看过这两种选择,你说得对<代码>FlowRouter.wait()
不适用。我已经在使用触发器,但我的Subscription
类在评估它是否是合法订阅之前,通常需要向用户的实践加载订阅。我尝试使用一个服务器专用的方法来获取订阅之外的实践,而不是一个通用的重定向页面,这太慢了,无法加载。