Meteor.user()仅返回其_id

使用Meteor.loginWithPassword()记录用户或使用Accounts.createUser(两个客户端)创建新用户后,我可以在回调中确认Meteor.user()确实包含所有设置记录的属性.

{ _id: "XXX",
  profile: {
     name: "Joe Shmoe",
     thumbnail: "http://www.YYY.com/ZZZ.jpg"
  },
  username: "joeshmoe" }

此外,根据the official docs,

By default, the current user’s username, emails and profile are published to the client.

那么,当我尝试在我的模板中访问这些字段时,是否有人能够说出原因

Template.login.user_name = function () {
    return (Meteor.userId() ? Meteor.user().profile.name : '')
};

由于Meteor.user()只返回{_id:“XXX”}没有它的实际属性,它失败了吗?即用户肯定已登录,但用户对象突然丢失/正在隐藏其所有属性.

谁知道问题可能是什么?

非常感谢.

编辑:这发生在Meteor 0.5.4,这是撰写本文时的最新版本.接受的答案确实解决了这个问题;有时Meteor.userId()在Object的其余部分从服务器到达之前已经有效.感谢大家.

最佳答案
数据可能尚未从服务器到达.而不只是检查Meteor.userId,如果您检查属性会发生什么?

Template.login.user_name = function() {
  return Meteor.userId() && Meteor.user() && Meteor.user().profile ? Meteor.user().profile.name : "";
}

转载注明原文:Meteor.user()仅返回其_id - 代码日志