Displaying all users in Meteor

Matt picture Matt · Jun 21, 2015 · Viewed 11.9k times · Source

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!

Answer

JuanCrg90 picture JuanCrg90 · Jun 21, 2015

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.