Meteor.user()对象

Meteor.user()对象,meteor,Meteor,流星。我感兴趣的信息是什么是保存用户数据(登录用户)的最佳实践。用户ID、公司ID等(数据不易更改)?会话变量不是一个选项,因为数据不会“存活”页面刷新 我经常需要检查Meteor.user().profile.companyId,并且经常会遇到著名的“无法读取未定义属性'profile'的问题”。将用户数据附加到用户文档(在profile下或根文档上)通常是最佳做法 我想您可以为数据定义一个全局帮助器。在这里,我将添加一个名为getPP(获取配置文件属性)的函数,并将其添加到Meteor.us

流星。我感兴趣的信息是什么是保存用户数据(登录用户)的最佳实践。用户ID、公司ID等(数据不易更改)?会话变量不是一个选项,因为数据不会“存活”页面刷新


我经常需要检查Meteor.user().profile.companyId,并且经常会遇到著名的“无法读取未定义属性'profile'的问题”。将用户数据附加到用户文档(在
profile
下或根文档上)通常是最佳做法

我想您可以为数据定义一个全局帮助器。在这里,我将添加一个名为
getPP
(获取配置文件属性)的函数,并将其添加到
Meteor.users

扩展(Meteor.users)({
getPP:函数(键){
var user=Meteor.user();
返回user&&user.profile&&user.profile[key];
}
}));
然后你可以这样使用它:

Meteor.users.getPP('companyId');

它将返回配置文件属性的值或
未定义
,并且不会抛出错误。

您可以使用持久会话包:


缺点是您使用的是全局名称空间,这是不受欢迎的。如果你限制它,那就好了

我认为没有比Meteor更好的地方了。用户你不能为Meteor.ready()检查路由器吗?或者为Meteor.user()检查waitOn吗?就像我在《卫报》文章中提到的,是的,你可以依靠路由器(如果使用IR)来做这些事情。实际上,我更喜欢让我的模板管理自己的订阅和错误条件。啊,对不起,我以为你的答案是回答这个问题:。我会移除它。谢谢你的回答。我的问题是Meteor.user对象的后期初始化。例如,在路由器中,若用户对象并没有初始化,我必须返回。waitOn:function(){if(!Meteor.user())返回;var user=Meteor.user();