2016-11-05 3 views
1

그래서 nodeJSmongoDB으로 작업하고 있습니다. 메신저는 컬렉션을 업데이트하는 데 문제가 있으며 메신저 작업이 시작된 지 일주일이 지났으며 실제로 두통을 겪습니다. 그래서이 여기에 다음 내 시료 채취

{ 
    "_id": ObjectId('51299sdfasdf') //this is just a sample Id  
    "names": [ 
     "NameA", 
     "NameB", 
     "NameC" 
    ], 
    "names_id": [ 
    ObjectId('asdfasdf1312'), 
    ObjectId('12sda123123a'), 
    ObjectId('asdf1212123a') 
    ], 
    "user_alias": "SampleA" 
} 

것은 내가 바로 그것을 코드를 알고 내 스크립트

var mongoose = require('mongoose'); 
var model = mongoose.model('Sample'); 

model.update({ _id: req.query._id }, 
     { 
      $set: { 
      names: namesArray, //this are set of names ex; ['name1', 'name2'] 
      names_id: namesIdArray //this are set of ids ex: [ ObjectId('sgsdfgsd'), ObjectId('asdfasdfadf') 
      }, 
     }, 
     function(err, results) { 
      if(err) res.status(500).send(err); 
       console.log(results); 


      } 
     ); 

입니다. names_id 배열에서 나는 mongoose.mongo.ObjectId('id here')과 같은 모든 객체 ID를 지정합니다. 하지만 아무것도 업데이트하지 않습니다. 여기에 결과가 있습니다.

{ ok: 1, nModified: 0, n: 1 } 

무엇이 문제입니까? 버전 때문인가요? 내 mongoose 버전은 2.15.8

도와주세요! 고맙습니다!

+0

당신이 있는지 있습니까 거라고 반대 할 거라고 변환이 읽기 ID를

객체에 _id를 변환하지'req.query._id'입니다 한정된? 또한 몽구스 버전 2.15.8도 없습니다. – robertklep

+0

예 정의 됨. 그리고 버전에 대해서. 때 나는 내 자식 npm mongoose -v 입력하십시오. 2.15.8. 이것은 나타날 것입니다 –

+0

몽구스 또는 MongoDB에 문제가 있다고 생각하지 않습니다. 'req.query.id'에 대한 값을 출력 할 수 있습니까? 특정 ID로 레코드가 없기 때문에 업데이트하지 않는 이유가 여기 있다고 생각합니다. – Samay

답변

1

너무 좌절하지 마세요, 나는 req.query.id 당신은 문서가 업데이트되지 않았습니다

OBJECTID 먼저 문자열로 변환해야하는 문자열 때문에 문제가 생각, 몽구스와 아무 잘못이있다 이 문서를 발견하지 않았기 때문에 다른 이유는 단지 내가 Convert string to ObjectID in MongoDB

+1

몽구스 자동으로 ObjectId 수 문자열을 캐스팅합니다. – robertklep

+0

아니야 캐스팅하지 않을거야 http://stackoverflow.com/questions/6578178/node-js-mongoose-js-string-to-objectid-function –

+1

그 질문은 5 년이 넘었습니다. Mongoose의 현재 버전은 캐스팅 될 것입니다. (여기에 데모가 있습니다 : https://gist.github.com/robertklep/1a227242c78d7415407dfdca3617ab5b) – robertklep

관련 문제