Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying all users in Meteor

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!

like image 452
Matt Avatar asked Jun 21 '15 04:06

Matt


2 Answers

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.

like image 140
JuanCrg90 Avatar answered Nov 12 '22 04:11

JuanCrg90


This should work!

// in server

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

// in client

    Meteor.subscribe("userList");
like image 35
hafiz ali Avatar answered Nov 12 '22 03:11

hafiz ali