Just a useful trick
Meteor methods are like global functions. You can not import/export them:
// methods.js
Meteor.methods({
'messages.create': function(message) {
// ...
},
});
// some-other-file.js
Meteor.call('messages.create', { text: 'hello' });
But there is a solution:
// methods.js
import method from './makeMethod';
const createMessage = method('messages.create', function(message) {
// ...
});
export { createMessage };
// some-other-file.js
import { createMessage } from 'methods';
createMessage({ title: 'hello' });
How it works:
import { Meteor } from 'meteor/meteor';
function makeMethod(name, fn) {
Meteor.methods({ [name]: fn });
return (...args) => {
Meteor.call(name, ...args);
};
}
export default makeMethod;