为不同用户发布不同的数据

时间:2015-07-08 12:39:15

标签: meteor iron-router meteor-accounts

我试图仅将所有用户发布到管理员但忽略某些数据(在这种情况下,API键应该是"私有"对每个用户,我意识到管理员可以最有可能检查数据库,但现在忽略安全隐患。)

所以基本的想法是用户可以完全看到自己的个人资料,而不是其他人。管理员可以查看自己的完整个人资料以及所有其他用户个人资料的审查版本。为此,我有以下发布代码:

Meteor.publish('currentUser', function() {
  return Meteor.users.find({_id: this.userId}, {fields: {'profile.apiKey': true}});
});

Meteor.publish('allUsers', function() {
  var currentUser = Meteor.users.findOne(this.userId);
  return currentUser && currentUser.profile.admin ?
         Meteor.users.find({}, {sort: ['username', 'asc'], fields: {'profile.apiKey': false}}) : null;
});

问题是登录后apiKey字段没有发布。即。如果我只是以管理员身份登录,则管理员的apiKey将无法使用,直到重新加载该页面为止。从“所有用户”中删除限制'发布函数解决了这个问题所以它必须与此有关。有没有办法强制Meteor在登录后重新加载订阅?

0 个答案:

没有答案