流星角色(alanning)。 Roles.userIsInRole return 错误

Meteor-roles (alanning). Roles.userIsInRole return false

我正在使用 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/>,
    });
  },
});

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

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/>,
          });
        }
      });
    }
  },
});