ฉันกำลังพัฒนาแอปสำหรับการใช้งานภายในบริษัท และฉันกำลังเผยแพร่รายชื่อผู้ใช้ที่มีคุณสมบัติเป็น "หัวหน้างาน" (โดยใช้ อลันนิ่ง:บทบาท.)
ฉันยังใช้ 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
});