Meteor.user()在客户端控制器中未定义
Meteor.user() is undefined in client-side controller
在METEORJS应用程序的客户端,我有一个显示一些用户的控制器。
我有一个问题与流星.user()函数,错误是:流星.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()不一定返回数据。然而,Meteor.userId()将返回用户记录的_id(如果他们已登录)。如果你可以改变你的查询依赖于_id,那么它可以工作。
根据你使用的路由器,你可以添加一个resolve:条目来确保路由在激活它之前等待用户记录被加载,然后你的查询就会工作。
我有一个类似的问题,错误是Meteor.user()不是一个函数
在我的例子中,我需要通过执行
来安装Meteor包accounts-password。 meteor add accounts-password
相关文章:
- $routeParams在传递到新视图时未定义&控制器
- Http服务工厂将未定义的返回到Angular中的控制器
- 角度指令控制器:参数不是函数,未定义
- 注入应用程序的角度控制器未定义
- 未定义的控制器AngularJS
- 从服务返回值时$scope控制器的变量是未定义的
- 尝试通过 Angular 控制器使用 Google Geocode API 进行地理编码,值未定义
- scope() 函数在 AngularJS 控制器中返回未定义
- angular.js:13424 ReferenceError:在控制器中使用工厂方法时未定义索引
- AngularJS指令中的作用域未定义,控制器中有ajax请求
- 从html调用angularjs控制器中的一个函数,但未定义范围变量
- 未定义角度控制器
- Angularjs:由控制器中的函数返回的变量是“未定义的”
- $scope.form.$error在Angular控制器中未定义
- 在一个页面上引导多个角度应用程序会导致控制器未定义错误
- AngularJS错误 - “控制器未定义”或“未定义函数”
- 测试角度控制器:未定义控制器
- 控制器未定义
- AngularJS + ASP控制器未定义
- 控制器未定义AngularJS