Meteor 返回光标结果导致“错误”;超出堆栈大小“0”;错误
我有一个页面,列出了一家公司的概况,并显示了它的公开职位。我使用iron router获取公司简介信息,但在页面加载后使用Meteor.call获取活动作业。然而,当我返回一个游标时,它抛出一个堆栈大小超出错误 organization.jsMeteor 返回光标结果导致“错误”;超出堆栈大小“0”;错误,meteor,Meteor,我有一个页面,列出了一家公司的概况,并显示了它的公开职位。我使用iron router获取公司简介信息,但在页面加载后使用Meteor.call获取活动作业。然而,当我返回一个游标时,它抛出一个堆栈大小超出错误 organization.js Template.organization.rendered = function() { Meteor.call('getActiveJobs', function(error, jobs){ if(error){
Template.organization.rendered = function() {
Meteor.call('getActiveJobs', function(error, jobs){
if(error){
console.log(error);
} else {
console.log(jobs);
}
});
}
收藏
Meteor.methods({
.....
getActiveJobs: function(){
return Jobs.find({organizationId: user.profile.organizationId});
}
.....
});
这会引发“RangeError:超出最大调用堆栈大小”错误
不过,我可以回来
return Jobs.find({organizationId: user.profile.organizationId}).fetch();
没有错误,但我尝试不返回光标,以便更容易使用把手,但我不太明白为什么会出现此错误。请注意,从方法返回的值需要以JSON格式从服务器传输到客户端。因此,您不能返回不可JSON序列化的对象(这里有一些小的异常,但我们现在可以忘记它们) 如果要返回光标,应使用
Meteor.publish
而不是Meteor.methods
,因此
Meteor.publish('activeJobs', function () {
var user = Meteor.users.findOne({_id: this.userId});
return Jobs.find({organizationId: user.profile.organizationId});
});
另外,请记住,一旦需要此数据集,就在客户端上调用
Meteor.subscribe('activeJobs')
。但.fetch()不返回对象数组,这是一个对象本身(可以工作)?是的,当然。但它是可序列化的。您可以安全地从方法返回对象数组,但这样就不会有游标。