我正在开发一个内部公司使用的应用程序,我正在发布一个符合“主管”资格的用户列表(使用alanning:roles。)
我还使用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
});
答案 0 :(得分:0)
查看Meteor docs(向下滚动到&#34;文件加载顺序&#34;)。 /lib/at_config.js
之前已加载/lib/functions.js
,因此尚未定义getSupervisors
。
不确定你的代码是如何构造的,所以我不能指出我将如何做到这一点。文档是你的朋友。