admin管理员组

文章数量:1201402

I have a template that I am trying to display all users in called userList.

//server

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

var user = Meteor.users.findOne({
    _id: this.userId
});


if (Roles.userIsInRole(user, ["admin"])) {
    return Meteor.users.find({}, {
        fields: {
            profile_name: 1,
            emails: 1,
            roles: 1
        }
    });
}

this.stop();
return;
});

Thanks in advance for the help!

I have a template that I am trying to display all users in called userList.

//server

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

var user = Meteor.users.findOne({
    _id: this.userId
});


if (Roles.userIsInRole(user, ["admin"])) {
    return Meteor.users.find({}, {
        fields: {
            profile_name: 1,
            emails: 1,
            roles: 1
        }
    });
}

this.stop();
return;
});

Thanks in advance for the help!

Share Improve this question edited Jun 21, 2015 at 6:32 hafiz ali 1,4463 gold badges16 silver badges38 bronze badges asked Jun 21, 2015 at 4:57 MattMatt 711 gold badge1 silver badge2 bronze badges 1
  • 1 You can pass this.userId instead of user for example if (Roles.userIsInRole(this.userId, ['admin'])) {..} – Marius Darila Commented Jun 22, 2015 at 9:31
Add a comment  | 

3 Answers 3

Reset to default 16

if you want show all the user you can try in your publish.js file:

Meteor.publish('userList', function (){ 
  return Meteor.users.find({});
});

in your router you susbcribe to this

Router.route('/users', {
    name: 'usersTemplate',
    waitOn: function() {
        return Meteor.subscribe('userList');
    },
    data: function() {
        return Meteor.users.find({});       
    }
 });

The next step is iterate your data in the template.

if you don't want subscribe in the router, you can subscribe in template level, please read this article for more details.

https://www.discovermeteor.com/blog/template-level-subscriptions/

Regards.

This should work!

// in server

    Meteor.publish("userList", function () {
           return Meteor.users.find({}, {fields: {emails: 1, profile: 1}});
    });

// in client

    Meteor.subscribe("userList");

This should work.

  1. subscribe(client)
  2. publish(server)

Client:

UserListCtrl = RouterController.extend({
    template: 'UserList',
    subscriptions: function () {
       return Meteor.subscribe('users.list', { summary: true });  
    },
    data: function () {
       return Meteor.users.find({});
    }
});

Server:

Meteor.publish('users.list', function (options) {
    check(arguments, Match.Any);
    var criteria = {}, projection= {};
    if(options.summary){
       _.extend(projection, {fields: {emails: 1, profile: 1}});
    }
    return Meteor.users.find(criteria, projection);
});

本文标签: javascriptDisplaying all users in MeteorStack Overflow