Meteor.Call奇怪的行为
我在服务器上运行以下代码:
服务器/ tickets.js
if (Meteor.isServer) { ticketsCollection = new Mongo.Collection('tickets'); var tickets = ticketsCollection.find({}).observe({ added: function(tkt) { Meteor.call('allocateTicket', tkt); } }); }
服务器/ ticket_allocation.js
Meteor.methods({ allocateTicket: function(ticket){ console.log(ticket); } });
起初,当服务器启动时,我得到的错误:
排队任务中的exception:错误:未find方法[404]
但是,随后的通话很顺利。 不知道为什么它启动服务器时无法识别meteor调用function。
有没有类似于订阅中使用this.ready()的方法。
确保在实际定义方法之前不要尝试执行call
。 如果您不想担心在您的项目中加载文件的顺序( http://docs.meteor.com/#/full/structuringyourapp ;文件加载顺序),那么最安全的做法是拨打电话在Meteor.startup
块内,例如:
ticketsCollection = new Mongo.Collection('tickets'); if (Meteor.isServer) { Meteor.startup(function() { var tickets = ticketsCollection.find({}).observe({ added: function(tkt) { Meteor.call('allocateTicket', tkt); } }); }); }
然后,在哪个文件中定义方法并不重要。