Метеор: Публикация всех пользователей, не работающих без пакета автопубликации
Я хотел бы показать список всех пользователей, в моем шаблоне. Я имею:
//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 ответа
Вы должны подписаться на публикацию, используя 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);
}
По умолчанию Метеор публикует текущего пользователя. Я вижу, что у вас есть addUser
шаблон и listUsers
шаблон. Проблема в том, что пока addUser
подписан на users
публикации, listUsers
нет (это будет зависеть от того, что еще у вас есть в вашем маршрутизаторе, конечно). Чтобы это исправить, измените вызов на this.render
сделать listUsers
шаблон. Тогда ваш users
Помощник должен работать, и вы можете предоставить информацию, как вам нравится.
Я проверил это с помощью своего собственного приложения (проект Microscope от DiscoverMeteor), и оно сработало для меня. Надеюсь, это работает и для вас. Прокомментируйте здесь, если нет, и обязательно примите этот ответ, если он сработал. знак равно