2015-06-14 2 views
0

Я бы хотел показать список всех пользователей в моем шаблоне. у меня есть:Meteor: публикация всех пользователей, не работающих без пакета автообновления

//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(). Что я делаю неправильно?

Спасибо.

+0

Где находится файл publications.js? Он должен находиться в каталоге сервера. –

+0

Да, это в каталоге сервера. –

+0

Проверьте свой шаблон. Также сделайте 'Meteor.users.find(). Fetch()' в консоли браузера и посмотрите, есть ли у него все пользователи. –

ответ

0

Вы должны подписаться на публикацию с помощью this.subscribe() в subscriptions крючке:

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

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

Или используйте 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); 
} 
0

По умолчанию Meteor публикует текущего пользователя. Я вижу, что у вас есть шаблон addUser и шаблон listUsers. Проблема в том, что, хотя addUser подписывается на публикацию users, listUsers не является (это будет зависеть от того, что у вас есть в вашем маршрутизаторе, конечно). Чтобы исправить это, измените вызов на this.render, чтобы отобразить шаблон listUsers. Затем ваш помощник users должен работать, и вы можете отображать информацию, как вам нравится.

Я проверил это с помощью своего собственного приложения (проект микроскопа от DiscoverMeteor), и это сработало для меня. Надеюсь, это сработает и для вас. Прокомментируйте здесь, если нет, и обязательно примите этот ответ, если он сработает. =)