在使用(客户端)登录用户Meteor.loginWithPassword()
或创建新用户后Accounts.createUser
,我可以在他们的回调中确认Meteor.user()
确实包含所有设置记录的属性。
{ _id: "XXX",
profile: {
name: "Joe Shmoe",
thumbnail: "http://www.YYY.com/ZZZ.jpg"
},
username: "joeshmoe" }
此外,根据官方文档,
默认情况下,当前用户的用户名、电子邮件和个人资料会发布到客户端。
那么,当我尝试访问我的模板中的这些字段时,任何人都能够说出为什么
Template.login.user_name = function () {
return (Meteor.userId() ? Meteor.user().profile.name : '')
};
它失败是因为Meteor.user()
只返回{_id: "XXX"}
没有任何实际属性?即用户肯定已登录,但用户对象突然丢失/隐藏其所有属性。
有谁知道可能是什么问题?
非常感谢。
编辑: 这发生在 Meteor 0.5.4 上,这是撰写本文时的最新版本。接受的答案确实解决了这个问题;有时Meteor.userId()
在对象的其余部分从服务器到达之前已经有效。谢谢大家。