Saya sedang mengerjakan aplikasi untuk penggunaan internal perusahaan dan saya menerbitkan daftar pengguna yang memenuhi syarat sebagai "supervisor" (menggunakan alanning:peran.)
Saya juga menggunakan useraccounts:bootstrap untuk mengumpulkan informasi tambahan dari setiap pengguna saat pendaftaran seperti siapa supervisor mereka.
Saya memiliki fungsi yang mengembalikan informasi yang saya perlukan tetapi hanya berfungsi ketika saya menjalankannya di konsol browser setelah situs dimuat.
Jika saya membuat array secara manual dan mengembalikannya, semuanya berfungsi seperti yang diharapkan. Intinya, tentu saja, hal ini harus bersifat dinamis dan tumbuh seiring dengan pertumbuhan basis pengguna.
Yang saya tahu hanyalah bahwa kode tersebut tidak berjalan dalam konteks/urutan yang saya kira. Saya telah mencoba berbagai hal berbeda hanya untuk melihat apa yang akan terjadi seperti memindahkan routes.js
ke /lib
(dari /client
), memindahkan definisi fungsi ke file lain, dan banyak lagi!
Bagaimana cara memperbaikinya? Saya cukup baru di Meteor, jadi sangat mungkin saya membuat kesalahan besar lainnya dan kesulitan yang saya alami ini hanyalah gejalanya. Jika ya, beri tahu saya!
/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
});