Meteor 返回光标结果导致“错误”;超出堆栈大小“0”;错误

Meteor 返回光标结果导致“错误”;超出堆栈大小“0”;错误,meteor,Meteor,我有一个页面,列出了一家公司的概况,并显示了它的公开职位。我使用iron router获取公司简介信息,但在页面加载后使用Meteor.call获取活动作业。然而,当我返回一个游标时,它抛出一个堆栈大小超出错误 organization.js Template.organization.rendered = function() { Meteor.call('getActiveJobs', function(error, jobs){ if(error){

我有一个页面,列出了一家公司的概况,并显示了它的公开职位。我使用iron router获取公司简介信息,但在页面加载后使用Meteor.call获取活动作业。然而,当我返回一个游标时,它抛出一个堆栈大小超出错误

organization.js

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()不返回对象数组,这是一个对象本身(可以工作)?是的,当然。但它是可序列化的。您可以安全地从方法返回对象数组,但这样就不会有游标。