铁路由器:从路由器控制器调用Meteor.user()返回错误

时间:2014-10-11 19:06:24

标签: meteor iron-router

在Iron路由器路径控制器中我尝试根据用户登录状态加载不同的模板,如下所示:

Router.map(function() {
    this.route('start', {
    path: '/',
    controller: StartController
    });
})

StartController = RouteController.extend({
    template: Meteor.user() ? 'home' : 'landing',
    waitOn: function() {
        return [Meteor.subscribe('something')]
    }
});

但是我在控制台中遇到异常: " ...错误:Meteor.userId只能在方法调用中调用。在发布函数中使用this.userId ..."

我真的不明白这个错误意味着什么,以及我在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

您发布的代码在服务器上执行。在服务器上,Meteor.user()只能在方法中执行。

但是,即使此错误不存在,您的代码也无法按照您的意愿运行。 Meteor.user() ? 'home' : 'landing'将在开头执行一次(当用户可能没有登录时),并且在用户登录/退出时不会被重新执行。

在文档中阅读this,这有点像你想做的那样。