将两个对象彼此更新为子对象-超过了最大调用堆栈大小
updating 2 objects with each other as subobjects - Maximum call stack size exceeded
我有两个对象,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循环。防止循环工作
相关文章:
- Javascript在实现时似乎跳过了一行(如果count==1)
- 我需要迭代一个JSON数组——不知道如何做到——已经搜索过了,但仍然可以'我一点也不知道
- Hammer.js过了一段时间就停止工作了
- grunt contrib jshint-error在定义之前就已经使用过了
- 进行自动实时聊天/虚假聊天,我的javascript跳过了第一个响应
- 该对象错过了您对模型的引用
- 对非对象调用了gulp jscs Object.keys
- 再次调用时跳过了 Ajax
- 谁能解释为什么我的日期函数通过 JS 日期对象给了我错误的转换
- 多个移动对象,每个对象附加了文本
- 我试过了,但调用成员单击不适用于输入按钮,它与其他按钮非常不同
- JavaScript克隆的对象失去了它的原型函数
- 窗口位置不起作用,我已经尝试过了
- 引导程序下拉不起作用.什么都试过了..(引导2.3.2)
- 为什么将一个值推入我的数组被跳过了
- 从Javascript数组中删除多个对象突破了一半
- 是否对JavaScript地图对象进行了索引以优化Map.get
- 将两个对象彼此更新为子对象-超过了最大调用堆栈大小
- 七吃九:为什么我的索引8在这个d3选择中被跳过了
- 为什么这个复选框不触发jquery代码onchange?我什么都试过了,但都不起作用