2016-07-22 3 views
0

나는 컬렉션의 _id를 사용하여 Mongo에 대한 기록을 찾으려고합니다. 나는 _id를 전달하고 String과 ObjectId로 시도했지만 아무도 작동하지 않습니다. 이상한 점은 findOne을 사용하면 _id가 다른 완전히 다른 레코드를 반환한다는 것입니다. 어디서나 모든 레코드를 찾는 find를 사용하면 아무것도 필터링하지 않습니다.Songs.js with Mongo 님이 찾을 수 없습니다.

다른 필드를 사용하여 검색하면 올바르게 작동하지만 올바른 레코드를 가져 오지만 _id 필드를 사용하여 필드를 지정하려고합니다.

MyModel.findOne({where: {_id: new ObjectId("57926086e2a4ff010eeb8c83")}}).exec(function (err, record){ 
    //record completely different 
}); 

MyModel.findOne({where: {_id:"57926086e2a4ff010eeb8c83"}}).exec(function (err, record){ 
    //record completely different 
}); 

MyModel.findOne({id: new ObjectId("57926086e2a4ff010eeb8c83")}).exec(function (err, record){ 
    //record completely different 
}); 

MyModel.findOne({id:"57926086e2a4ff010eeb8c83"}).exec(function (err, record){ 
    //record completely different 
}); 

그래서, 내가 잘못 뭐하는 거지? 내가 그것을 알아낼 수 없습니다 : 이것은 내가 지금까지 시도한 것입니다. 내가 "네이티브"를 사용하여 그것을 할 수 있다고 생각한다. 그러나 그 유일한 방법은 무엇입니까 ???

감사합니다.

+0

몽구스를 사용하고 있습니까? 아니면 워터 라인을 사용하고 있습니까? – robertklep

+0

@robertklep Hummm, 어떻게 알 수 있습니까? connection.js에서 저는 어댑터 돛과 몽고로 someMongodbServer를 구성했습니다. – Laerion

+0

그럴 경우, 나는 Waterline을 사용하고 있다고 생각한다. (나는 경험이 없다.) 'mongoose' 태그가 나를 혼란스럽게 만들었습니다. – robertklep

답변

2

내 sails.js 애플리케이션 경험을 토대로 최종 옵션 만 작동해야합니다.

  • 것은 sails.js를 사용하여 워터, 당신은 id 및 NOT _id (마지막 옵션)를 사용해야합니다.
  • Waterline을 통해 MongoDB 기본 호출을 사용할 때는 _idnew ObjectId() (첫 번째 옵션에서 쿼리 매개 변수)을 사용해야합니다.
+0

그래,이게 이상하지만 게시물 마지막 옵션을 다시 시도하면 작동합니다! 그 전에는 무슨 일이 있었는지 모르겠지만, 그것은 효과가 없었습니다 ... 어쨌든, 지금 작동하고 마지막 옵션 :) 올바른 방향으로 나를 가리켜 주셔서 감사합니다! – Laerion

관련 문제