【问题标题】:Meteor: Maximum call stack size exceededMeteor:超出最大调用堆栈大小
【发布时间】:2015-10-31 18:11:22
【问题描述】:

我尝试做一些我已经做过几次的事情,从来没有遇到过这样的错误。

我只想在我的流星应用程序中找到其 X 字段等于 Y 的所有文档:

JS:(模板助手)

'friendPictures' : function(){
    var currentFriendId = this._id;
    Pictures.find({ownerId: currentFriendId});
    // DO SOMETHING WITH THE PICTURES
}

HTML:(在模板内)

{{#each friend}}
    ...
    {{friendPictures}} // Calling for the helper
    ...
{{/each}}

我在尝试执行“find()”时不断收到此错误,也在 Chrome 的控制台中:

Uncaught RangeError: Maximum call stack size exceeded
at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?71047b64b5196348bdbe5fd5eea9ac97a5a9eb14:528:3)
at http://localhost:3000/packages/ejson.js?71047b64b5196348bdbe5fd5eea9ac97a5a9eb14:530:22
at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:164:22)
at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?71047b64b5196348bdbe5fd5eea9ac97a5a9eb14:529:5)
at http://localhost:3000/packages/ejson.js?71047b64b5196348bdbe5fd5eea9ac97a5a9eb14:530:22
at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:164:22)
at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?71047b64b5196348bdbe5fd5eea9ac97a5a9eb14:529:5)
at http://localhost:3000/packages/ejson.js?71047b64b5196348bdbe5fd5eea9ac97a5a9eb14:530:22
at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:164:22)
at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?71047b64b5196348bdbe5fd5eea9ac97a5a9eb14:529:5)

以前有人遇到过这种情况吗?

编辑:

文档示例:

{
     _id: "DCgKA73wNm2mYAhSD",
     base64: "very long string..."
     ownerId: "fRPD87tHkap9hQyB8",
     tags: [
          "nothing",
          "special"
     ]
}

【问题讨论】:

  • 你的数据结构有循环引用吗?
  • 我们在这里讨论了多少文件?它们都具有相同的结构吗?出现的错误对于“异步调用”很常见(这是流星“隐藏”在你身边的东西,但仍在幕后发生)。我敢打赌,您目前没有分享的 “用图片做点什么” 部分是问题的原因
  • @BlakesSeven 你真是个救世主!我不知道 Meteor 是这样工作的,但你对不同结构的事情是对的,我最近添加了标签,有些图片没有它们,从集合中删除它们解决了它。
  • @BlakesSeven 谢谢,我把它作为未来问题的要点。您能否在高层次上描述这个问题的根源是什么,以便我可以将其记录为这个问题的公认答案?我对 Meteor 还很陌生,仍在学习它的内部结构。
  • 我希望我能给你更多@Anko - 你的建议正是调用我的调用堆栈异常的原因。对于其他任何人:我在整个错误跟踪中都遇到了 EJSON 问题。

标签: javascript node.js mongodb meteor


【解决方案1】:

你试过用 fetch() 运行它吗?

Collection.find({pictureId: currentPicId}).fetch();

fetch 将找到的光标变成一个数组。 但同样,如果没有更多信息,这个答案可能不相关。

【讨论】:

  • 那么问题可能出在{{#each friend}} 循环上?
  • 当我在助手中执行 console.log(currentFriendId) 时,我得到了 ID,所以我不确定这是这里的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2015-12-29
  • 2017-12-27
  • 2020-12-06
  • 2018-02-06
  • 2020-06-28
  • 2016-02-28
相关资源
最近更新 更多