У меня возникла проблема с получением данных профиля пользователя из помощника шаблона в Meteor 0.8.0. Этот код отлично работал в предыдущей версии, но после обновления сегодня утром он не работает. Первоначально я думал, что проблема заключается в том, что помощники шаблонов запускаются дважды, но когда я покопался, я обнаружил, что проблема немного сложнее.
Ниже помощник шаблона 'findClientLiason' вызывается дважды (его вывод регистрируется 2 раза в консоли). В первый раз пользователь будет отображаться как «неопределенный», во второй раз правильный пользовательский объект появится так, как я ожидаю. Оба раза 'clientLiason' будет выводиться правильно.
Самое интересное для меня, что если я удалю 'var user = Meteor.users.findOne({_id: clientLiason});' вызов, чтобы получить вызов findOne, помощник вызывается только один раз.
Мне кажется, что вызов коллекции Meteor.users вызывает другой вызов базы данных. И что при первом вызове коллекция Meteor.users пуста.
У меня есть публикация и подписка, показанные ниже. Я использую глобальную функцию waitOn() Iron Router, но мне интересно, следует ли загружать коллекцию Meteor.users раньше?
Любые идеи были бы хорошы. Спасибо еще раз.
publications.js
Meteor.publish('allUsers', function() {
return Meteor.users.find();
});
router.js
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading',
waitOn: function() {
return [
Meteor.subscribe('clientsActive'),
Meteor.subscribe('allUsers'),
Meteor.subscribe('notifications')
];
}
});
clientItem.html
<template name="clientItem">
{{findClientLiason clientLiason}}
</template>
clientItem.js
Template.clientItem.helpers({
findClientLiason: function(clientLiason) {
var user = Meteor.users.findOne({_id: clientLiason});
console.log(clientLiason);
console.log(user);
return user.profile.name;
}
});