将2个对象彼此更新为子对象 - 超出最大调用堆栈大小

时间:2014-10-09 10:58:43

标签: javascript node.js mongodb express mongoose

我有两个对象,childPost和parentPost。我想将childPost作为Subelement存储到parentPost,反之亦然,但无论我尝试什么,我总是遇到:

RangeError: Maximum call stack size exceeded

在stackoverflow上已经有很多关于这个主题的线程,但似乎没有一个线程有我遇到的确切问题。

我的代码(遗漏了不必要的代码,如错误处理):

async.parallel([
  function () {
      originalPost.subPosts.push(post);
      originalPost.save(function (err) {
      });
  },
  function () {
      post.originalPost.push(originalPost);
      post.save(function (err, post) {
      });
  }
], sendResponse(res, 201, post));

我在上述解决方案旁边尝试了什么:

  • 没有async lib
  • 的相同代码
  • setImmediate()nextTick()setTimeout()
  • 遗漏了post.originalPost.push(originalPost); - 这有效,但是它并没有将子元素保存在我的子帖子中

我用:

  • node.js v0.11.14-pre
  • 猫鼬
  • 表示
  • mongodb v2.4.9

编辑:我的数据模型:

var postSchema = new mongoose.Schema({
    sharedPosts: [subPostSchema],
    originalPost: [subPostSchema],
    // ...-
});

我的subPostSchema看起来就像我的postSchema(很遗憾,我无法做sharedPosts: [postSchema]而没有收到错误 - >所以我复制了我的架构。对我来说似乎不对,但这是迄今为止我能让它运作的唯一方式)

1 个答案:

答案 0 :(得分:0)

我的解决方案:查看我的帖子的评论 general:我无法将originalPost添加到我的sharedPost中,其中包含originalPost - >无尽的循环。防止循环工作