2014-01-07 2 views
0

email 필드를 설정하고 (findOne)를 쿼리하고 싶습니다. 고유 색인을 만들었습니다. 또한 모범 사례에 따라 모든 전자 메일 주소를 소문자로 적용하고 싶습니다.mongoose는 set/find를 수행 할 때 lowercase와 같은 위생 처리를하는 선언적 방법을 지원합니까?

물론 email에 의해 설정 및/또는 질의하는 모든 컨트롤러가 먼저 소문자로 표시 될 수 있지만 오류가 발생하기 쉽습니다. 대신이 선언문을 mongoose/mongo에 오프로드하는 방법이 있습니까? 즉, [email protected]을 몽구스에게 건네면 [email protected]으로 새 니타이션되어 값을 설정하거나 콜렉션을 쿼리하기 전에.

답변

2

사전 저장 미들웨어를 사용할 수 있습니다. 이것은 코딩이지만 문서를 저장하기위한 모든 호출은 저장 위치와 상관없이 이메일을 소문자로 만들 수 있습니다.

userSchema.pre('save', function(next) { 
    var user = this; 
    user.email = user.email.toLowerCase(); 
    next(); 
}); 
+1

예. 스키마에서 바로 소문자 : true와 trim : true를 할 수 있다는 것을 알았습니다. 이것은 내가 원한 것과 비슷합니다. 그러나 내 제안뿐만 아니라 내 제안도 쿼리 부분을 다루지 않습니다. –

+0

고마워요. 그것은 나와 함께 일하는거야 :) –

관련 문제