2017-12-20 1 views
0

Model.findOne() 메서드를 사용할 때 findById 메서드를 사용하여 반환 값을 제한하는 문자열을 포함하도록 선택할 수 있지만 제대로 작동하지 않는 것처럼 보입니다.findById를 사용하여 지정된 필드 반환 | Mongoose MongoDB

아래 예제는 고안된 예제입니다. 실제 _id를 사용하고 있는데 첫 번째 예제를 사용할 때 작동하지만, findById 메서드를 사용하고 싶습니다. 내 마음 속의 작은 목소리가 빠른 (어쩌면) 말하기 때문입니다.

예 :

let Joe = new PersonModel({ 
    _id: ObjectId("12345") 
    name: 'Joe', 
    age: 30, 
    password: 'GreatPW' 
}).save(); 

지금 조를 찾아, 오직 자신의 이름과 나이를 반환합니다. 이 작품!

PersonModel.findOne({_id: Joe._id}, 'name age') 
    .then(person => console.log(person)) 

이제 findById()를 사용하여 동일한 작업을 수행합니다. 이것은 나를 위해 작동하지 않습니다.

PersonModel.findById(Joe._id, 'name age') 
    .then(person => console.log(person)) 
+2

findById 메소드는 findOne를 호출, 그래서 더 빨리 할 수 ​​없습니다. 출처는 [여기] (http://mongoosejs.com/docs/api.html#model_Model.findById)입니다. findById도 투영해야합니다. – MikaS

+0

당신은 틀리지 만 지금은 작동 중입니다. 어제 밤에 그 코드에 영향을 미친 뭔가가 있었을 것입니다. 이것을 답변으로 추가하면 나는 당신에게 정답을 표시 할 것입니다. – TJBlackman

+2

잘 듣는 것이 좋습니다. 재현 할 수없는 문제는 실제로 대답되어지지 않아서 제 의견이 충분하다고 생각합니다. 어쨌든 고마워. – MikaS

답변

1

몽구스를 켜십시오. 이 두 호출 간의 유일한 차이는 findById to findOne의 추가 함수 호출이라는 것을 알 수 있습니다.

소스 코드 참조 : findById (MikaS에서 제공)를

관련 문제