3
我想有一些出版物只根据用户的角色返回用户有权访问的项目。我正在使用alanning:roles包来处理角色。基于登录用户的“角色”的流星中的动态出版物
举例来说,我有一个类似的出版物:
Meteor.publish('header_fields', function() {
console.log("header_fields: %j", this.userId);
if (Roles.userIsInRole(this.userId,['ADMIN','INSPECTOR'])) {
// Inspectors and Admins can see all header fields
return HeaderFields.find();
} else {
// Clients should only be able to see header fields for forms they have access to
var user = Meteor.users.find({_id: this.userId});
var formIds = [];
_.each(Forms.find({client_id: user.profile.client_id}).fetch(), function(form) {
this.push(form._id);
}, formIds);
return HeaderFields.find({form_id: {$in: formIds}});
}
});
我遇到的问题是,在我见过的所有例子中,发布在服务器中的文件夹中的.js文件定义,从而在客户端首次连接时运行并获取。但是,当客户端首次连接时,用户未登录。但是,我不知道应该把这些出版物放在哪里,或者它应该如何工作。
是的,我只是再读一遍,看到它。现在它工作的很好,我只是用'if(this.userId)...'来包装每个出版物的整个内容。我的下一个混乱是,每次点击一个链接时,它都会重新运行这些出版物,就好像用户正在改变一样。不知道应该发生。 – CodeChimp 2014-10-03 01:06:56