Meteor:发布所有不使用autopublish包的用户

时间:2015-06-14 18:28:13

标签: meteor meteor-accounts meteor-publications

我想在我的模板中显示所有用户的列表。 我有:

//publications.js
Meteor.publish('users', function() {
    return Meteor.users.find({}, { fields: {username: 1, profile: 1} });
});

//router.js
Router.route('/users/add/:_id?', {name: 'users.add', controller: 'UserAddController'});

UserAddController = RouteController.extend({
  subscriptions: function(){
    return [ Meteor.subscribe('hospitals'), 
            Meteor.subscribe('roles'),
            Meteor.subscribe('users') ];
  },
  action: function() {
    this.render('addUser', { 
      data: function(){
        return { hospital_id : this.params._id }
      }
    });
  }
});


//client
Template.listUsers.helpers({
  users: function() {
    return Meteor.users.find({});
  }
});

但该列表仅显示当前登录用户。我使用Account.createUser()函数创建了一个用户列表我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:0)

You have to subscribe to a publication using this.subscribe() in subscriptions hook:

// a place to put your subscriptions
subscriptions: function() {
  this.subscribe('items');

  // add the subscription to the waitlist
  this.subscribe('item', this.params._id).wait();
}

Or use waitOn:

// Subscriptions or other things we want to "wait" on. This also
// automatically uses the loading hook. That's the only difference between
// this option and the subscriptions option above.
waitOn: function () {
  return Meteor.subscribe('post', this.params._id);
}

答案 1 :(得分:0)

默认情况下,Meteor发布当前用户。我看到您有一个addUser模板和一个listUsers模板。问题是虽然addUser订阅了users出版物,但listUsers不是(这取决于你当然在你的路由器中有什么)。要解决此问题,请将调用更改为this.render以呈现listUsers模板。然后,您的users助手应该可以使用,您可以随意呈现信息。

我用自己的应用程序(来自DiscoverMeteor的显微镜项目)对此进行了测试,这对我有用。希望它也适合你。如果没有,请在此处评论,如果有效,请务必接受此答案。 =)