我有一个对象数组,我想插入我的DB:
tracks = [new Track({name : "myname1"}), new Track({name : "myname2"})]
Track.collection.insert(tracks, {}, function(err, tracks){
console.log('err', err);
}
但是,即使数组中有2个对象,insert()方法也会抛出一个错误:
[RangeError: Maximum call stack size exceeded]
(创建了"跟踪"文档,但其中没有任何内容。)
编辑Mongoose-RangeError:超过最大调用堆栈大小解决了第一个问题,但没有解决我真正的问题:
当您从Model创建一个对象时,您可以获得_id,我用它来创建另一个对象。但是不可能插入Mongoose对象的集合,因为问题已经解决:您必须仅使用数组JSON对象。
data.items.forEach(function(item,index){
tracks.push(new Track({name : "myname1"}) );
posts.push(new Post({trackId : track._id}) );
}
Track.collection.insert(tracks, {}, function(err, tracks){
console.log('err', err);
}
我找到的解决方案是创建自己的唯一Id,而不是获取猫鼬对象的Id。。。并使用JSON对象:
data.items.forEach(function(item,index){
tracks.push({name : "myname1"}) ); //name is unique
posts.push({trackId : track.name) );
}
Track.create(tracks, function(err){
console.log('err', err);
}