Meteor.user() 在客户端控制器中未定义
Meteor.user() is undefined in client-side controller
在 METEORJS 应用程序的客户端,我有一个显示一些用户的控制器。
我在使用 Meteor.user() 函数时遇到问题,错误是:Meteor.user(...) 未定义。
这是我的代码:
this.AdminUsersController = RouteController.extend({
template: "Admin",
yieldTemplates: {
'AdminUsers': { to: 'AdminSubcontent'}
},
onBeforeAction: function() {
var permissions = Meteor.user().profile.permissions;
if (permissions && permissions.indexOf('Users') != -1)
this.next();
else this.redirect('/admin/dashboard');
},
action: function() {
if(this.isReady()) { this.render(); } else { this.render("Admin"); this.render("loading", { to: "AdminSubcontent" });}
/*ACTION_FUNCTION*/
},
isReady: function() {
var subs = [
Meteor.subscribe("users")
];
var ready = true;
_.each(subs, function(sub) {
if(!sub.ready())
ready = false;
});
return ready;
},
data: function() {
var data = {
params: this.params || {},
users: Users.find({labo_id: Meteor.user().profile.labo_id}, {sort: {createdAt:-1}})
};
return data;
},
onAfterAction: function() {
}});
在数据函数中。
我尝试检索连接到已登录用户并获得相同 labo_id 字段的所有用户...
我不知道为什么它给我这个,因为在 onBeforeAction 函数中,我可以访问 Meteor.user(),特别是他的个人资料...
有人知道我该怎么做才能做到吗运行?
感谢您以后的回答:)
这是时间问题。 Meteor.user() 不一定是 return 数据,如果它还没有被加载的话。 Meteor.userId() 但是 return 用户记录的 _id(如果他们已登录)。如果您可以更改查询以依赖于该 _id,那么它就可以工作。
根据您使用的路由器,您可以添加一个 resolve: 条目以确保路由在激活之前等待用户记录加载,然后您的查询才能工作。
在 METEORJS 应用程序的客户端,我有一个显示一些用户的控制器。
我在使用 Meteor.user() 函数时遇到问题,错误是:Meteor.user(...) 未定义。
这是我的代码:
this.AdminUsersController = RouteController.extend({
template: "Admin",
yieldTemplates: {
'AdminUsers': { to: 'AdminSubcontent'}
},
onBeforeAction: function() {
var permissions = Meteor.user().profile.permissions;
if (permissions && permissions.indexOf('Users') != -1)
this.next();
else this.redirect('/admin/dashboard');
},
action: function() {
if(this.isReady()) { this.render(); } else { this.render("Admin"); this.render("loading", { to: "AdminSubcontent" });}
/*ACTION_FUNCTION*/
},
isReady: function() {
var subs = [
Meteor.subscribe("users")
];
var ready = true;
_.each(subs, function(sub) {
if(!sub.ready())
ready = false;
});
return ready;
},
data: function() {
var data = {
params: this.params || {},
users: Users.find({labo_id: Meteor.user().profile.labo_id}, {sort: {createdAt:-1}})
};
return data;
},
onAfterAction: function() {
}});
在数据函数中。 我尝试检索连接到已登录用户并获得相同 labo_id 字段的所有用户...
我不知道为什么它给我这个,因为在 onBeforeAction 函数中,我可以访问 Meteor.user(),特别是他的个人资料...
有人知道我该怎么做才能做到吗运行?
感谢您以后的回答:)
这是时间问题。 Meteor.user() 不一定是 return 数据,如果它还没有被加载的话。 Meteor.userId() 但是 return 用户记录的 _id(如果他们已登录)。如果您可以更改查询以依赖于该 _id,那么它就可以工作。
根据您使用的路由器,您可以添加一个 resolve: 条目以确保路由在激活之前等待用户记录加载,然后您的查询才能工作。