2014-07-08 6 views
2

이것은 나를 위해 작동하지 않는 Easiest way to copy/clone a mongoose document instance?의 후속 조치입니다.몽구스 문서를 복제하는 방법은 무엇입니까?

다음 코드는 ._id를 지우고 컬렉션에 새 문서를 만드는 대신 "Mongo _id를 편집 할 수 없습니다."필드를 throw합니다.

추가 사용/테스트/등을 위해 문서의 모든 값을 새 문서로 복제하는 더 좋은 방법이 있습니까?

나는 몽구스 3.8.12/익스프레스 4.0을 사용 중이며 아래의 '정의되지 않은's1._id 필드에 새 ObjectID를 만들 때이를 테스트했다.

router.route('/:sessionId/test/:testId') 
    .post(function(req,res){   
     Session.findById(req.params.sessionId).exec(
     function(err, session) { 
      var s1 = new Session(); 
       s1 = session; 
       s1._id = undefined; 

       console.log('posting new test', s1._id);  // your JSON 
       s1.save(function(err) { 
        if (err) 
         res.send(err); 

        res.json('new session ', req.body); 
       }); 
     } 
    ); 
}); 
+1

돌아와서 답을 알려 주셔서 감사합니다. 그러나 질문을 편집하는 대신 답변으로 직접 추가해야합니다. –

+0

포인터 주셔서 감사. – pretentiousgit

답변

4

대답은 :

var s1 = new Session(session); 
s1._id = undefined; 
+0

_id가없는 문서는 저장할 수 없습니다. 어떻게 작동합니까? http://stackoverflow.com/questions/25345274/mongoose-data-saving-without-id – Nepoxx

+0

이 방법은 스키마에 배열을 정의한 경우 빈 배열을 초기화합니다. –

5

당신은 당신이 복제 할 문서에 대한 새 ID를 만들 필요가 true로 isNew을 설정, 그래서 주어진 "세션은"복제 할 문서입니다 :

session._doc._id = mongoose.Types.ObjectId(); 
session.isNew = true; 
session.save(...); 
관련 문제