当用户登录他们的帐户时,我想检查用户角色并将他们引导到合适的主页。角色由meteor-roles
设置,我使用flow-router
设置。目前这只会引发一个触发错误:
Exception from Tracker recompute function:
TypeError: Cannot read property 'roles' of undefined
甚至可以在路由器文件中访问roles
吗?
路径:Routes.js
FlowRouter.route("/", {
name: 'home',
action: function() {
var user = Meteor.user();
var userRole = user.roles;
if (userRole == 'is_student') {
FlowRouter.go('profileNew');
} else if (userRole == 'is_teacher') {
FlowRouter.go('profile');
} else {
FlowRouter.go('profileAdmin');
}
}
});
答案 0 :(得分:1)
var user = Meteor.user(); //您没有登录,因为应用程序刚刚启动
var userRole = user.roles; //此时用户未定义,那么如何获得角色?这就是它抛出错误的原因。
所以你可以像这样管理这种情况: -
FlowRouter.route("/", {
name: 'home',
action: function() {
var user = Meteor.user();
if(user){
var userRole = user.roles;
if (userRole == 'is_student') {
FlowRouter.go('profileNew');
} else if (userRole == 'is_teacher') {
FlowRouter.go('profile');
} else {
FlowRouter.go('profileAdmin');
}
}
}
});