2012-08-12 7 views
2

나는 몽구스로 Node.js와 MongoDB에 서버를 작성하고 있습니다.보내기 전에 응답을 필터하십시오.

나는 다음과 같습니다 사용자 모델을 가지고 :

var User = new Schema({ 
    username : { 
    'type'  : String, 
    'trim'  : true, 
    'required' : true, 
    'validate': [usernameValidator, 'whitespace_not_allowed'] 
    }, 
    avatar : { 
    'type'  : String, 
    'lowercase' : true, 
    'required' : true 
    }, 
    facebook_id : { 
    'type'  : Number, 
    'required' : true, 
    'index'  : { unique: true } 
    }, 
    email : { 
    'type'  : String, 
    'lowercase' : true, 
    'required' : true 
    }, 
    token : { 
    'type'  : String, 
    'index'  : { unique: true }, 
    'required' : true 
    } 
}); 

클라이언트 요청 나는 그에게 사용자 토큰을 보내려하지 않는 모든 자신의 페이스 북 친구들이 거의 모든 요청 마찬가지입니다

. 하지만 로그인과 같은 일부 요청의 경우 토큰을 보내려고합니다.

이 문제는 데이터베이스를 쿼리 할 때 결과를 필터링하는 것을 잊어 버리고 다른 정보를 토큰에 보내면 꽤 치명적일 수 있습니다.

지금 생각하고있는 솔루션은 기본적으로 어떤 필드를 선택해야 하는지를 지정하는 방법 (아직 어느 것을 모르는 것인지)을 재정의하는 것입니다. 그렇다면 내가 필요로하는 몇 가지 경우에는 쿼리에서 지정해야합니다. 이것은 메모리 슬립이 잘못된 데이터를 전송하지 않도록합니다.

이 문제를 어떻게 해결합니까?

답변

1

당신은 스키마의 필드 정의의 select 속성을 통해 기본적으로 결과에 token 필드를 제외 할 수

token : { 
    'type'  : String, 
    'index'  : { unique: true }, 
    'required' : true, 
    'select' : false 
} 
관련 문제