2017-10-22 1 views
0

findOne() 을 사용하여 하나의 단일 문서를 찾고 있습니다. 내 문서에는 내 사용자 모델의 키 중 하나 인 userid이 있습니다.몽구스 findOne()은 빈 객체를 반환합니다.

{ 
    userid: 1, 
    name: 'John' 
} 

가 지금은 객체로이 문서를 수신 할 수 있어요 예 내가 userid의 같은 값을 제출하려고하면 나는 그러나

users.findOne({userid: 1}, function(e, data){ 
    if(e){ 
     return (res.send('Failed')) 
    }else{ 
     return (res.send(data)) 
    } 
}); 

을, 다음을 수행 그러면 동적으로 data obj가 null을 반환하고 여전히 if(e) 문이 실행되지 않습니다.

users.findOne({userid: req.body.userid}, function(e, data){ 
    if(e){ 
     return (res.send('Failed')) 
    }else{ 
     return (res.send(data)) 
    } 
}); 

I 콘솔 req.body.userid의 값을 기록하며 동적 전달할 때 1임을 확인.

내가 뭘 잘못하고 있니? req.body.userid의 값이 userid 키에 올바르게 전달되지 않았습니까?

답변

2

당신은 당신이 올바르게 필터 객체를 실행

확인

var key = "userId"; //example 
var value = req.body.userId; 
var filter = {}; 
filter[key] = value; 

    user.model.findOne(filter, function(e, data){ 
     if(e){ 
      return (res.send('Failed')) 
     }else{ 
      return (res.send(data)) 
     } 
    }); 
+0

아래의 코드 이제 (전자)의 경우를 사용하여 설정해야합니다 변수를 사용하여 필터 값을 전달하려고하는 에러 내가이 말한다면 캐스트 오류. "name": "CastError"또한 req.body.userid의 값이 정수인지 확인했습니다. – Aditya

+0

console.log 요청으로부터 오는 것을 볼 수있는'req.body.userid','typeof req.body.userid' 그리고'parseInt (req.body.userid)'의 값과' userid' ... 오류는'parseInt' 함수 결과가'NAN'이라는 것을 의미하기 때문에'req.body.userid'는 숫자 문자열이 아니거나 숫자가 아닙니다. –

+0

문서에서 exptected 유형이 number입니다 typeOf req.body.userid도 숫자입니다. – Aditya

관련 문제