2014-12-10 5 views
0

빠른 하나몽구스 변경 문서 _id 업데이트/저장

왜 몽구스 변화/문서의 _id 필드를 업그레이드 I 업데이트를 푸시 할 때? 의도 한 동작입니까?

감사합니다.

내가 내 PUT 경로 내에서 사용하는 업데이트이며, 성공적으로 업데이트 된 모델을 반환하지만 불행히도 좋아, 문제가 해결

Document.findById(req.params.doc_id, function (err, doc) { 
    if (err) 
     res.send(err) 

    // Do some subdoc stuff here … 

    doc.save(function (err) { 
     if (!err) { 
      console.log('Success!'); 
      res.json(doc); 
     } else { 
      console.log(err); 
     } 

    }); 
}); 
+3

실제로 업데이트입니까? _id를 변경하면 안됩니다. 이렇게하면 일부 코드로 쉽게 파악할 수 있습니다. –

+1

미안 누군가 너를 투표 했어, 나 아니야. – earlonrails

답변

1

문서에 대한 새로운 _id와 : 내가 잘못 _id를 기록했다

1

몽구스의 문서 http://mongoosejs.com/docs/2.7.x/docs/model-definition.html (! DOH) 사용하는 것이 좋습니다 update 또는 findOne

예 :

var query = { name: 'borne' }; 
Document.update({"_id": req.params.doc_id}, { name: 'jason borne' }, {}, function(err, numAffected){ 
    if (!err) { 
    console.log('Success!'); 
    res.json(numAffected); 
    } else { 
    console.log(err); 
    } 
}); 

또는

Model.findOne({ "_id": req.params.doc_id }, function (err, doc){ 
    doc.name = 'jason borne'; 
    doc.save(); 
    // here you could use your save instead, but try not to use the doc again 
    // it is confusing 
    // doc.save(function (err, documentSaved, numberAffected) { 
    // if (!err) { 
    //  console.log('Success!'); 
    //  res.json(documentSaved); 
    // } else { 
    //  console.log(err); 
    // } 
    // }); 
}); 

나중에 나는 또한 당신이 두 번 재확인 또한 사용중인 버전을 확인하고, 최신 것으로 보인다 일부 문서 http://mongoosejs.com/docs/documents.html에서 제안 findById 메소드 업데이트를 발견 여기에서 귀하의 기능에 doc을 사용하십시오. 또한 mongoDB를 검사하여 하나 이상의 레코드가 저장되었는지 확인할 수 있습니다.

db.documents.find({}) 
+0

안녕하세요. 글쎄, 2.7은 구식이고 몽구스의 3.8. *를 사용합니다. 저장 및 업데이트에 관해서는 실제로 달라집니다. 중간에 암호를 해시하기 위해 주로 Mongoose 미들웨어 (사전/게시)를 사용합니다. 이 게시물에 잘 설명되어 있습니다. http://stackoverflow.com/questions/22278761/mongoose-difference-between-save-and-using-update – wittgenstein