2011-07-17 3 views
4

는 이전에 내 UserSchema은 다음과 같이 정의했다 :몽구스 "세터"는 "게터"처럼 행동합니까? MongoDB를하고 Node.js를</p> <p>와 몽구스를 사용

var UserSchema = new Schema({ 
    username:  { type: String, unique: true }, 
    password:  String, 
    email:  { type: Email, unique: true, validate:/^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ } 
}); 

내 사용자가 생성되었을 때 나는 암호를 암호화. 그 때 나는 "setters"에 대해 알게하고 나는이 내 UserSchema 변경 : 나는 다른 변경을하지 않은 (내가 기억할 수)와 사용자로 로그인 할 때 내 암호 것을 발견

var UserSchema = new Schema({ 
    username:  { type: String, unique: true }, 
    password:  { type:String, set:encryption.Encrypt }, 
    email:  { type: Email, unique: true, validate:/^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ } 
}); 

잘못된. 데이터를 볼 때 데이터베이스에서 보낸 암호화 된 암호는 데이터베이스에 저장된 암호와 다릅니다. UserSchema에서 "setter"를 꺼내면 올바르게 표시됩니다. 위에서 볼 수 있듯이

이, 세터 당신이 원시 MongoDB의 문서를 가져 와서 설정 전에 데이터를 변환 할 수 있습니다 :

지금이 내 문제는 "세터"과 같이 설명이다 실제 키의 값으로

나에게 이것은 Setter가 실제로 Getter처럼 행동하고 데이터베이스에서 BACK으로 오는 데이터를 변형하는 것처럼 보입니다.

나는 이것을 완전히 오해하고 있습니까?

+0

에서 수정되었습니다 몽구스의 버그가 실제로 있었다, 그러나 당신이 user.doc.password하는 user.password 비교하는 시도가 (어떤이 있어야 원시 몽고 문서)? –

답변

5

이 이후 내가 무슨 일이 일어나고 있는지 확실하지 않다 몽구스 2.0