我在服务器上运行以下代码:
if (Meteor.isServer) {
ticketsCollection = new Mongo.Collection('tickets');
var tickets = ticketsCollection.find({}).observe({
added: function(tkt) {
Meteor.call('allocateTicket', tkt);
}
});
}
Meteor.methods({
allocateTicket: function(ticket){
console.log(ticket);
}
});
首先,当服务器启动时,我收到错误:
然而,随后的电话会很好。不知道为什么它在启动服务器时无法识别Meteor Call功能。排队任务中的异常:错误:找不到方法[404]
是否存在与订阅中使用的this.ready()类似的方法。
答案 0 :(得分:1)
确保在实际定义方法之前不尝试执行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);
}
});
});
}
然后,您在定义方法的文件中无关紧要。