对于用户数据,我有一个发布/订阅,如下所示:
Meteor.publish("allUserData", function () {
return Meteor.users.find({}, {
fields: { "emails": 1, "_id": 1, "profile": 1 }
}
);
});
Meteor.subscribe("allUserData");
但是,当我尝试阅读配置文件时,它总是未定义,直到我刷新页面,然后我才能阅读它。 我正在尝试阅读如下配置文件:
Meteor.user().profile
我做错了什么?为什么在刷新页面时它会起作用,而在初始加载时却不起作用?我已尝试使用和不带引号的发布函数中的属性名称...
答案 0 :(得分:2)
Meteor.user()。配置文件在Meteor.user()之后的几分之一秒内不可用。此外,创建用户帐户时,它没有配置文件。解决方案是在反应函数中使用超时。
Meteor.autorun(function(handle) {
if (Meteor.user()) {
if (Meteor.user().profile) {
// use profile
handle.stop()
}
else {
setTimeout(function(){
if (!Meteor.user().profile) {
// new user - first time signing in
Meteor.users.update(Meteor.userId(), {
$set: {
'profile.some_attribute': some_value
}
})
}
}, 2000)
}
}
})