将两个对象彼此更新为子对象-超过了最大调用堆栈大小

updating 2 objects with each other as subobjects - Maximum call stack size exceeded

本文关键字:对象 过了 调用 堆栈 更新 两个      更新时间:2023-09-26

我有两个对象,childPost和parentPost。我想将childPost作为子元素存储到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库的相同代码
  • setImmediate()nextTick()setTimeout()
  • 省略了post.originalPost.push(originalPost);-这很有效,但它没有在我的childpost中保存子元素

我使用:

  • node.js版本0.11.14-pre
  • 猫鼬
  • 快递
  • mongodb v2.4.9

编辑:我的数据模型:

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

我的subPostSchema看起来和我的postSchema一样(不幸的是,我无法在不出现错误的情况下执行sharedPosts: [postSchema],所以我复制了我的Schema。这对我来说似乎是错误的,但这是迄今为止我能使其工作的唯一方法)

我的解决方案:查看我的文章的评论general:我无法将originalPost添加到我的sharedPost中,因为它有originalPost->endless循环。防止循环工作