解決,但在尋找改善,看到答案不等待meteor.user鐵路由器()返回
function completedProfile() {
if (Meteor.user() && Meteor.user().profile.primary_email && Meteor.user().profile.display_name && Meteor.user().university_id) {
return true;
} else {
return false;
}
}
Router.map(function() {
this.route('landing', {
path: '/', // match the root path
onBeforeAction: function() {
this.subscribe('users').wait();
if (this.ready() && completedProfile()) {
this.render('bulletin')
} else {
this.redirect('splash');
}
}
});
});
該頁面將重定向到我飛濺的模板,因爲completeProfile功能是假的(所有領域在if語句中爲null)。
嘗試2(對飛濺掛起領域已填充後):
Router.map(function() {
this.route('landing', {
path: '/', // match the root path
action: function() {
if (this.ready() && completedProfile()) {
this.redirect('bulletin')
} else {
this.render('splash');
}
},
});
嘗試3:
function completedProfile() {
if (Meteor.user() && Meteor.user().profile.primary_email && Meteor.user().profile.display_name && Meteor.user().profile.university_id) {
return true;
} else {
return false;
}
}
Router.map(function() {
this.route('landing', {
path: '/', // match the root path
action: function() {
console.log(Meteor.user().profile); //this fails
console.log(this.ready(), completedProfile()); //this then returns as expected
if (this.ready() && !completedProfile()) {
this.redirect('splash');
} else {
this.render('bulletin')
}
},
});
this.route('splash', {
path: '/splash', // match the root path
});
this.route('bulletin', {
path: '/bulletin', // match the root path
});
這很古怪,這工作。 Meteor.user的日誌會導致錯誤,然後然後 Meteor.user()會給我一個合適的completedProfile()返回值。錯誤是Exception in callback of async function: TypeError: Cannot read property 'profile' of undefined
。
'的console.log(Meteor.user()配置文件);'拋出一個錯誤,當'Meteor.user()''返回undefined'(你想閱讀'undefined'屬性''profile'')。嘗試'if(Meteor.user()){console.log(Meteor.user()。profile)}' – 2014-11-05 02:58:21