【问题标题】:Iron router: call to Meteor.user() from router controller returns errorIron 路由器:从路由器控制器调用 Meteor.user() 返回错误
【发布时间】:2014-10-12 03:15:14
【问题描述】:

在 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...”

我真的不明白那个错误是什么意思,我在这里做错了什么。

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

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

    但是,即使不存在此错误,您的代码也不会按您希望的方式运行。 Meteor.user() ? 'home' : 'landing' 将在开始时执行一次(用户可能未登录时),并且在用户登录/退出时不会重新执行。

    阅读文档中的this,这就是做你想做的事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 2018-06-10
      • 2015-11-30
      • 2016-02-11
      相关资源
      最近更新 更多