流星角色(alanning)。 Roles.userIsInRole返回false

时间:2016-07-21 10:03:47

标签: meteor roles flow-router

我正在使用meteor-role包,在Flowrouter上重定向时遇到问题。我在导航栏中有一个按钮,用户将用户重定向到主页,具体取决于角色。问题是角色包需要一些时间准备好并且抛出错误。 关于如何解决这个问题的任何想法?提前致谢。

FlowRouter.route( '/', {
  name: 'home',
  triggersEnter: [() => {
    if (Meteor.userId()) {
      if (Roles.userIsInRole(Meteor.userId(), 'student')) {
        FlowRouter.go('internships_next');
      } else if (Roles.userIsInRole(Meteor.userId(), 'organization')) {
        FlowRouter.go('user_internships');
      } else {
        throw new Meteor.Error( 500,
          'There was an error processing your request. User id: ' + Meteor.userId()
        );
      }
    }
  }],
  action() {
    mount(LayoutContainer, {
      content: <LoginContainer/>,
    });
  },
});

1 个答案:

答案 0 :(得分:1)

在重定向之前,您需要确保Roles.subscription.ready()为true:

FlowRouter.route( '/', {
  name: 'home',
  action() {
    Tracker.autorun(function() {
      if (Meteor.userId() && Roles.subscription.ready()) {
        if (Roles.userIsInRole(Meteor.userId(), 'student')) {
          FlowRouter.go('internships_next');
        } else if (Roles.userIsInRole(Meteor.userId(), 'organization')) {
          FlowRouter.go('user_internships');
        } else {
          mount(LayoutContainer, {
             content: <LoginContainer/>,
          });
        }
      });
    }
  },
});