Meteor IronRouter waitOn无限循环

时间:2016-01-28 01:36:01

标签: meteor iron-router

我使用IronRouter对我的meteor应用程序进行了非常标准的设置。我遇到的问题是,我试图将某人重定向到基于来自第三方网站的URL中的某些令牌的页面,但是当用户通过来自Accounts.onLogin回调的用户通过Router.go发送到目的地时( “一些/好玩/ URL”); waitOn函数无休止地运行。 以下是设置的相关部分。

首先是我重定向到的路线:

Router.route("/shows/:show_acronym/sponsorships", {
    name:"sponsorshipsSalesPortal",
    data:function(){
        return {show:Shows.findOne({acronym:this.params.show_acronym})};
    },
    waitOn:function(){
        console.log("wait on");

        return [Meteor.subscribe("show_by_acronym",this.params.show_acronym),Meteor.subscribe("catalogue_products_by_acronym", this.params.show_acronym)];

    }
});

接下来是onLogin钩子的相关部分:

Accounts.onLogin(function(){
    if (Session.get("showToRedirectTo")){
      console.log("sending to sponsorship portal");
      var ur ="/shows/"+Session.get("showToRedirectTo")+"/sponsorships"

      return Router.go(ur);
    }
});

当它点击重定向时,网址会发生变化,并且“等待”消息将永久打印在控制台中。有谁知道这个解决方案?如果可能的话,我宁愿将所有订阅保留在路由器级别。

由于

2 个答案:

答案 0 :(得分:0)

您应该只在waitOn返回数组中返回订阅游标(Meteor.subscribe(*))。 在你的情况下,“this.params.show_acronym”是问题......

答案 1 :(得分:0)

实际上你的代码看起来不错,已经有一段时间了,因为我不使用Iron Router或Sessions。

但是看看WaitOn,看起来没问题,问题可能来自服务器端show_by_acronymcatalogue_products_by_acronym抛出错误,但在所有情况下这都会导致你得到一个错误spinner永远加载,而不是永久打印console.log("wait on");

所以我认为你的Accounts.onLogin导致了这一点。

尝试类似的事情。

Accounts.onLogin(function(){
    if (Session.get("showToRedirectTo")){
      console.log("sending to sponsorship portal");
      var ur ="/shows/"+Session.get("showToRedirectTo")+"/sponsorships"

      Router.go(ur);
      Session.set('showToRedirectTo', false)
    }
});