在铁路由器注销期间,Meteor用户配置文件未定义错误

时间:2016-01-29 09:27:09

标签: meteor iron-router

我在帮助器中使用Meteor.user()。profile。当我注销时,我得到错误配置文件未定义。我的代码如下:

Template.listedWork.helpers({
  workList: function() {
    if (Meteor.user().profile.yetki == 1) {
      return Work.find({})
    } else {
      return Work.find({
        username: Meteor.user().username
      });
    }

  }
});

我正在列出的工作页面中进行注销,例如:localhost / listedWork。那是铁路由器渲染代码

    Router.route('/listedWork', {
      action: function() {
          this.render('listedWork');
      },
    onBeforeAction: function() {

    if (!Meteor.userId()) {
      this.layout("loginLayout");
      this.render('login');
    } else {
      this.next();
    }
  }


     });

当我在这里注销时,Meteor.user()。profile被workList调用,这就是我收到此错误的原因。

登录模板在onBeforeAction中渲染以​​进行注销。为什么列出工作模板帮助器在这里调用它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

注销后未定义Meteor.user()。配置文件的原因是因为您不再拥有Meteor.user()。您需要在助手中检查这一点,并在Meteor.user()返回null时执行适当的操作。

Template.listedWork.helpers({
    workList() {
        if( !Meteor.user() ) {
            // Handle the case.  Redirect to /login or something.
        }
        else {
            // Your current helper code here.
        }
    }
});