Я работаю над приложением для внутреннего использования компанией и публикую список пользователей, которые квалифицируются как «руководители» (используя аланнинг:роли.)
Я также использую useraccounts:bootstrap для сбора дополнительной информации о каждом пользователе во время регистрации, например, кто является его руководителем.
У меня есть функция, которая возвращает нужную мне информацию, но она работает только тогда, когда я запускаю ее в консоли браузера после загрузки сайта.
Если я соберу массив вручную и верну его, все будет работать как положено. Дело, конечно, в том, что это должно быть динамичным и расти по мере роста пользовательской базы.
Все, что я знаю, это то, что код работает не в том контексте/порядке, в котором я думаю. Я пробовал разные вещи, просто чтобы посмотреть, что произойдет, например, перемещение routes.js
в /lib
(из /client
), перемещение определения функции в другой файл и многое другое!
Как я могу это исправить? Я новичок в Meteor, поэтому вполне возможно, что я совершаю какую-то другую огромную ошибку, и эта трудность, с которой я сталкиваюсь, является лишь симптомом этого. Если да, пожалуйста, дайте мне знать!
/server/publications.js
Meteor.publish('supervisor-list', function() {
var criteria = {
roles: {$in: ['supervisor']}
};
var options = {
fields: {
'profile.firstName': 1
, 'profile.lastName': 1
}
};
return Meteor.users.find(criteria, options);
});
/client/routes.js
Router.configure({
layoutTemplate: 'layout'
, loadingTemplate: 'loading'
, notFoundTemplate: '404'
, waitOn: function () {
return [
Meteor.subscribe('transactions')
, Meteor.subscribe('supervisor-list')
];
}
, yieldTemplates: {
nav: {to: 'nav'}
, footer: {to: 'footer'}
}
});
/lib/1functions.js
getSupervisors = function () {
var output = [];
var supervisors = Meteor.users.find().fetch();
for (var i = 0; i < supervisors.length; i++) {
output.push({
text: supervisors[i].profile.firstName + ' ' + supervisors[i].profile.lastName
, value: supervisors[i]._id
});
}
//output = [
// {text: 'Person One', value: 'personone'}
// , {text: 'Person Two', value: 'persontwo'}
// , {text: 'Person Three', value: 'personthree'}
//];
return output;
};
/lib/at_config.js
AccountsTemplates.addField({
_id: 'supervisorEmail'
, type: 'select'
, select: getSupervisors()
, required: true
});