显示Meteor中的所有用户

时间:2015-06-21 04:57:44

标签: javascript meteor meteor-accounts

我有一个模板,我试图在被叫userList中显示所有用户。

//服务器

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;
});

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:13)

如果您想要显示您可以在publish.js文件中尝试的所有用户:

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

在您的路由器中,您可以使用此

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

下一步是在模板中迭代您的数据。

如果您不想在路由器中订阅,您可以在模板级别订阅,请阅读本文了解更多详情。

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

问候。

答案 1 :(得分:6)

这应该有效!

//在服务器

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

//在客户端

    Meteor.subscribe("userList");

答案 2 :(得分:0)

这应该有用。

  1. 订阅(客户端)
  2. 发布(服务器)
  3. 客户端:

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

    服务器:

    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);
    });