Ich habe das folgende Problem mit Meteor: Ich habe einen Administrator, der alle registrierten Benutzer sehen muss. Aber alle anderen Benutzer sollten die anderen Benutzer nicht sehen können. Deshalb veröffentlichte ich den folgenden Code auf der ServersideMeteor - Veröffentlichen Sie alle Benutzer zu Client nur für Admin
Meteor.publish("adminUsers", function(){
var result;
if (Roles.userIsInRole(this.userId, ["admin"]))
{
result = Meteor.users.find();
}
//console.log(result);
return result;
});
Auf Client-Seite ich mit
Meteor.subscribe("adminUsers");
auf diese abonnieren und tun
AllUsers = new Meteor.Collection("adminUsers");
Jetzt habe ich alle Benutzer bekommen in eine Vorlage mit diesem Code:
Template.adminUserverwaltung.AllUsers = function(){
console.log(AllUsers.find());
return AllUsers.find();
}
und zeigen das Ergebnis in der Vorlage mit diesem Code:
<template name="adminUserverwaltung">
{{#each AllUsers}}
{{this.username}}
{{/each}}
</template>
Aber leider ist es nicht funktioniert ... Kann mir jemand helfen, vielleicht?
Dies scheint von [meteor.com: Meteor.user()] (http://docs.meteor.com/#/full/meteor_user) davon abgehalten zu werden, "Meteor.user()" nicht zu verwenden in 'Meteor.publish()' – Paul
Es könnte sich seit 2013 geändert haben. ['publish'] (http://docs.meteor.com/#/full/meteor_publish) Die Dokumentation schlägt vor,' this.userId' zu verwenden. – rzymek
Ja, ich fand, dass ich die '_id's für die Admins sammeln und ein globales Array auf der Serverseite für den Vergleich mit' this.userId' füllen musste. Der Versuch, die Eigenschaften der Benutzerdatensätze zu untersuchen, funktionierte für mich innerhalb der Veröffentlichung nicht. – Paul