2017-12-04 8 views
0

MongoDB와 함께 몽구스를 사용하고 있는데이 문제점을 발견했습니다. 데이터베이스에서 하나의 객체를 찾은 다음 객체 속성 만 반환하지만 변수를 호출하면 원하는 객체가 아닌 객체 전체가 반환됩니다.몽구스 개체에서 정확한 속성 만 반환합니다.

var CharacterInDbCounter = await UserModel.findOne({battletag: req.user.battletag}, function(err, user){ 
    if (err) { 
     console.log(err); 
    } else { 
     return user.characters 
    } 
}) 
console.log(CharacterInDbCounter); 

반환 :

{ _id: 5a25a14a05656b24accfe231, 
    id: 1234, 
    battletag: 'Something', 
    provider: 'bnet', 
    __v: 0, 
    characters: 
    [ 5a25a14a05656b24accfe218, 
    5a25a14a05656b24accfe219, 
    5a25a14a05656b24accfe21a, 
    5a25a14a05656b24accfe21b, 
    5a25a14a05656b24accfe21c, 
    5a25a14a05656b24accfe21d, 
    5a25a14a05656b24accfe21e, 
    5a25a14a05656b24accfe21f, 
    5a25a14a05656b24accfe220, 
    5a25a14a05656b24accfe221, 
    5a25a14a05656b24accfe222, 
    5a25a14a05656b24accfe223, 
    5a25a14a05656b24accfe224, 
    5a25a14a05656b24accfe225, 
    5a25a14a05656b24accfe226, 
    5a25a14a05656b24accfe227, 
    5a25a14a05656b24accfe228, 
    5a25a14a05656b24accfe229, 
    5a25a14a05656b24accfe22a, 
    5a25a14a05656b24accfe22b, 
    5a25a14a05656b24accfe22c, 
    5a25a14a05656b24accfe22d, 
    5a25a14a05656b24accfe22e, 
    5a25a14a05656b24accfe22f ] } 
+0

: https://stackoverflow.com/questions/25330555/mongoose -find-return-specific-properties – dnickless

+0

나는 이것을 시도했지만 eventho는 실제로 원하는 것을 선택하기 위해 매개 변수를 사용했다. 항상 _id와 문자가있는 객체를 돌려 주었다. – kokoto13

+0

_id는 _id : 0 투영 매개 변수 – dnickless

답변

1

당신이 await 사용할 때 promise 방법 불행하게도

var CharacterInDbCounter = await UserModel.findOne({battletag: req.user.battletag}) 
    .then(function(user){ 
     return user.characters 
    }) 
console.log(CharacterInDbCounter); 

에서 작업을 수행해야 목표를 달성하기 위해 당신이 할 수있는 약속 catch로하지 catch 오류, 당신 예외를 잡으려면 try/catch에 코드를 둘러싸 야합니다.user 인수가 정의되지 않았거나 비어 있지체크하면

try { 
    var CharacterInDbCounter = await UserModel.findOne({battletag: req.user.battletag}) 
     .then(function(user) { 
      if (!user) { 
       // user not found 
      } 
      return user.characters 
     }) 
    console.log(CharacterInDbCounter); 

} catch(e) { 
    // catch unexpected errors 
} 
당신은 MongoDB를 당신이 관심있는 것만을 반환해야하는 방법을 찾기 위해이 답변 봐야한다
+0

고맙습니다. 마지막으로 알고 싶은 것은 오류를 디버깅하는 방법입니다. 왜냐하면 함수 (오류, 사용자)를 사용하면 작동하지 않기 때문입니다. – kokoto13

+0

이렇게하면 되나요? VAR의 CharacterInDbCounter = UserModel.findOne 기다린다 ({battletag : req.user.battletag}) 그 때는 (기능 (사용자) { 복귀 user.characters }) .catch (함수 (ERR) { 복귀 "ERR"; }}); – kokoto13

+0

@ kokoto13 내 대답을 업데이 트 – Farnabaz