Meteor.userId() 返回登录用户的值,但 Meteor.user() 在 meteor 1.5 中未定义



这是html:

<div>
    <span id="login-entrance">{{loginEntranceContent}}</span>
</div>

这是客户端 js 代码:

loginEntranceContent(){
    if (Meteor.userId()==null) {
        return 'Log in/Sign up';
    } else {
            Meteor.user().emails.address;
    };
},

现在我确定用户已登录,因为当我尝试 Meteor.userId() 时,它返回当前用户_id的值。但是 Meteor.user() 原来是未定义的。我假设 Meteor.user() 结果应该稍后自动更新。所以我等了一段时间,但它在我的 chrome 浏览器中也没有更新。

我知道这个问题与 DOM 在数据准备就绪之前渲染的事实有关。但我不知道那里到底发生了什么。

我已经在论坛上寻找答案,有一些类似的主题,但没有一个提供明确的解释和简单的解决方案。所以我希望为它打开一个新话题是值得的。

仅供参考,为了解决它,我尝试在服务器端制作一种方法:

Meteor.users.findOne({_id:'this.userId'});

并从客户端调用它。 它仍然得到未定义的结果....

你只是在做一个null检查,那么其他"虚假"值检查呢,你必须正确使用下面的代码,

loginEntranceContent(){
    if (!Meteor.userId()) {
        return 'Log in/Sign up';
    } else if(Meteor.user() && Meteor.user().emails && Meteor.user().emails[0].address){
            return Meteor.user().emails[0].address;
    } else {
        //do something here.
    };
},

由于您尚未向我们展示从客户端调用 Meteor 方法的代码,@Jankapunkt建议在服务器端使用以下代码,

Meteor.users.findOne({_id : this.userId});

注意:Meteor提供了一个漂亮的API来管理用户帐户

相关内容

  • 没有找到相关文章

最新更新