Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
Meteor FlowRouter,路由依赖于订阅时如何获取数据_Meteor_Meteor Blaze_Flow Router - Fatal编程技术网

Meteor FlowRouter,路由依赖于订阅时如何获取数据

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

我正在为我的应用程序编写许可证验证部分,并且仅当用户的许可证已过期时,才希望将用户重定向到续订页面

我正在使用FlowRouter和Blaze

我的所有经过身份验证的路由都在一个组中:

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
类在评估它是否是合法订阅之前,通常需要向用户的实践加载订阅。我尝试使用一个服务器专用的方法来获取订阅之外的实践,而不是一个通用的重定向页面,这太慢了,无法加载。