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); } }); }); } 

然后,在哪个文件中定义方法并不重要。