2015-02-09 3 views
1

У меня есть массив объектов, которые я хочу вставить в моей БД:Mongoose - Вставьте две коллекции: один ID зависит от другого

 tracks = [new Track({name : "myname1"}), new Track({name : "myname2"})] 

     Track.collection.insert(tracks, {}, function(err, tracks){ 
      console.log('err', err); 
     } 

Но даже с 2 объекта в массиве, вставка() метод выдаст ошибку: (. Док "следы" создается, но ничего внутри него)

[RangeError: Maximum call stack size exceeded] 

EDIT Mongoose - RangeError: Maximum Call Stack Size Exceeded решить первую проблему, но не решить мою настоящую проблему:

Когда вы создаете объект из Модели, вы можете получить _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); 
    } 
+2

возможно дубликат [Mongoose - RangeError: Максимальный размер стека вызовов] (http://stackoverflow.com/questions/24466366/mongoose-rangeerror-maximum-call-stack-size-exceeded) – anvarik

ответ

1

Решение, которое я нашел, чтобы создать свой собственный уникальный идентификатор, а получить идентификатор объекта мангустов ... и использовать 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); 
} 
Смежные вопросы