Meteor - 仅为管理员将所有用户发布到客户端

use*_*513 6 templates mongodb meteor

我有Meteor的问题:我有一个管理员,需要查看所有注册用户.但是所有其他用户都不应该有能力看到其他用户.因此,我在服务器端发布了以下代码

Meteor.publish("adminUsers", function(){

   var result; 
   if (Roles.userIsInRole(this.userId, ["admin"]))
   {
        result = Meteor.users.find();
   }
   //console.log(result);
   return result;
});
Run Code Online (Sandbox Code Playgroud)

在客户端,我订阅了这个

Meteor.subscribe("adminUsers");
Run Code Online (Sandbox Code Playgroud)

并做

AllUsers = new Meteor.Collection("adminUsers");
Run Code Online (Sandbox Code Playgroud)

现在我希望使用以下代码获取模板中的所有用户:

Template.adminUserverwaltung.AllUsers = function(){
console.log(AllUsers.find());
return AllUsers.find();
}
Run Code Online (Sandbox Code Playgroud)

并使用以下代码在模板中显示结果:

    <template name="adminUserverwaltung">
  {{#each AllUsers}}
    {{this.username}}
  {{/each}}
</template>
Run Code Online (Sandbox Code Playgroud)

但不幸的是它不起作用......也许有人可以帮助我吗?

Aks*_*hat 5

当您订阅集合时,订阅名称是adminUsers但用户集合仍然Meteor.users是已经定义的。

所以只需改变它以使用它代替

Template.adminUserverwaltung.AllUsers = function(){
    return Meteor.users.find();
}
Run Code Online (Sandbox Code Playgroud)